Вообще без загрузки - серверными средствами? Дело в том, что у меня нет бэкенда. У меня только фронтенд. Конечно, там всё грузится быстро... Но всё равно, jQuery может же вызвать код до загрузки не имея ширину? Или нет?
Я имею ввиду, что код висящий на document.ready выполнится как-только дерево распарсится, так? Соответственно, jQuery обращаясь за шириной img может получить нули или undefined - разве нет?
$(window).load - вариант, но если изображений много, тогда получится, что пока не загрузятся все, те что успели подгрузится будут отрисованы как есть - с большим размером. Так что наверное лучше в document.ready пройтись по img и повесить им в load функцию изменения их размера.
P.S. У нас такая ситуация - бэкенда нет, т.к. нет веб-сервера. Но время подгрузки может быть большим, если материалы лежат, например, на удалённом сервер (на шаре).
@bookworm на самом деле не каждый раз срабатывает. Ясное дело срабатывает, когда в кеше изображение, но когда чищу кеш - не срабатывает в первый раз.
В общем, решить вопрос можно, каким-то образом на jsfiddle решено, ведь если у них в поле js прописать код, то срабатывает каждый раз, посмотрел код - в head прописано как здесь jsfiddle.net/iiil/e5yEL/6
Обратите внимание, теперь загрузка не по onLoad, а просто в head.
Но у меня по прежнему не срабатывает, не понимаю почему.
Вот и остается как Вы сказали - в document.ready пройтись по img и повесить им в load функцию изменения их размера.
Да. Есть правда и другой вариант - можно хранить две версии всех изображений и, определив, что ретина, менять в документ-реди всем img-ам src - дописывать туда, например, какой-то префикс.
Это может даже и лучше было бы, поскольку , запихивая большие не на ретину, мы оставляем задачу масштабирования (вниз) браузеру. А у некоторых алгоритмы дают хуже результат в некоторых случаях, чем масштабирование в графическом редакторе.