CSS Background-Images Загрузка изображений после HTML (включает Javascript) - PullRequest
2 голосов
/ 02 апреля 2010

Я собрал небольшой маленький микросайт, который вы можете увидеть на http://monterraauction.com. Если у вас нет сверхбыстрого соединения (и ничего не кэшировано), самые последние элементы для загрузки - это фоновые изображения, которые используются для замены текстового изображения CSS (в первую очередь это h1#head вверху, с фоновым изображением 7 КБ). Ничего изнурительного, но выглядит немного неловко. И я задаю этот вопрос из любопытства больше всего на свете;) Также обратите внимание, что это происходит в Firefox, но не в Chrome.

Теперь, под h1#head, у меня есть слайд-шоу на основе jquery.cycle.lite в div#photo. В разметке HTML есть в общей сложности 13 тяжелых файлов изображений, которые составляют каждый из слайдов. Если я уберу все, кроме первого слайда, то проблема исчезнет! Значит, CSS-фоновые изображения загружаются после ... эти HTML-изображения сделаны? Но вот что смущает:

Я проверяю это в YSlow ... CSS-фоновые изображения имеют намного меньшее время отклика, чем все слайды в #photo. Сразу после того, как все файлы JS заканчивают загрузку, фактически. Так почему же они не появляются первыми?

Я попробовал $('#photo img:last-child').load(function() { alert('Locked and Loaded!')});, но фоновые изображения всплывают за некоторое время до того, как сработает предупреждение, поэтому я предполагаю, что он не ждет, пока загрузится последний слайд (по общему признанию, я немного NS JOOB, так что, возможно, я я просто делаю неправильное предположение).

Я также попытался закомментировать весь материал jquery.cycle.lite, так что я знал, что у меня не было JS, манипулирующего элементами DOM в #photo, но это не было проблемой. Я попытался поместить все JS внизу документа, прямо перед </body>, но это не сработало. Наконец, я попытался отключить javascript, и, конечно, фоновое изображение css загружается намного раньше изображений в #photo, так что это определенно вещь JS (амирит?)

Полагаю, очевидное решение здесь - пометить слайды как ССЫЛКИ, а не как IMG, и сделать так, чтобы Javascript вставил эти 12 дополнительных изображений слайд-шоу после того, как DOM будет готов - пользователям без javascript в любом случае не нужно загружать дополнительные изображения , Но мне опять любопытно:

Почему удаление лишних HTML-изображений из #photo решает проблему? И почему CSS-фоновые изображения появляются после загрузки HTML-изображений, хотя YSlow говорит, что CSS-фоновые изображения загружаются первыми? Видя, как это происходит в FF, но не в Chrome, это просто проблема с браузером?

Я ценю любую информацию, которую вы, ребята, могли бы дать мне!

Ответы [ 2 ]

0 голосов
/ 03 апреля 2010

Ну, я не видел этой проблемы, хотя, когда я смотрел на HTML, все <img> были там. Вот сетевая панель для моей попытки воспроизвести:

http://www.freepichosting.com/graphic/thumbs/322782-2010-04-02-th.png

0 голосов
/ 02 апреля 2010

Что произойдет, если вы вставите небольшой блок скрипта вверху <head> для предварительной загрузки фоновых изображений? (Просто создайте новые объекты «Изображение» и установите свойства источника.) Я не говорю, что это хорошая идея, но это может быть интересный эксперимент.

(Обратите внимание, что я имею в виду блок скрипта, который вы намереваетесь выполнить во время разбора, а не что-то, что устанавливает обработчик «готовности страницы» в виде jQuery (function () {...}).)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...