Onload, для вставляемого html кода с изображениями, после загрузки всего документа.

Линка

Новичок
Onload, для вставляемого html кода с изображениями, после загрузки всего документа.

Привет всем.
Проблема состоит в следующем:
Пусть есть страница и все узлы на ней уже загружены.
Dom сформирован.
Событие onload уже сработало.

В какое-то место страницы вставляется (innerHTML) произвольный HTML код, содержащий изображения.
В процесе загрузки документа этого кода еще нет. потому сделать прелоад не получится.

Браузер тут же начинает тянуть эти картинки с сервера и отображать их.
В целях красивости было бы неплохо не показывать изначально этот блок с картинками.
А показать тогда, когда картинки уже загружены.

Как это сделалть?

Можно конечно поцепить события onload на сами картинки и когда все события сработали то показать блок.

Но, в этом же коде могут быть блоки с background-images. Как для них определить события onload?

Учитывая. что такой товарищь как ие6 будет тянуть одну и ту же картинку по несколько раз.
(Точнее не тянуть, а постоянно спрашивать сервер на наличие изменений, получать ответ что картинка не изменилась и показывать ее)

Тоесть, все сводится к одному - как узнать что браузер затянул все внешние файлы? В моем случае изображения.

Может можно прицепить какое-то событие на их парент?

Хотя, чесно говоря, я не уверена, что есть такое кроссбраузерное событие.
 

kruglov

Новичок
Теоретически, если вставить картинку бэкграундом и где-то в visibility:hidden картинкой, то они одновременно загрузиться должны.
В контейнеры с display:none некоторые браузеры картинки не грузят
 

Линка

Новичок
Теоретически да.
Практически ие6 как всегда не хороший человек.

Как только поток закрыт. То есть если на странице ничего не грузится уже.
В этом случае ие все равно грузит картинку. будь она img или background-image.

Но к сожалению в моей задаче неизвестно какие картинки будут на странице что бы сделалть прелоад.

Конечно как решение можно весь HTML что надо вставить на страницу писать документ.врайтом в скрытий iframe и потом когда будет у него onload переставлять как обьект его содержимое в нужное место.
Но в этом случае ие6 все равно начнет все заново "тянуть".

Да и не хочется нормальные браузеры таким грязным хаком мучать.

Наверно нет решения. ;-(
 

Crys

Двинутый новичок
То есть у нас была загружена картинка (фоном, или просто в нулевой img), потом после загрузки страницы мы делаем document.write('<img src="эта_картинка"') и надо сделать так, чтобы она кэшировалась?
 

Линка

Новичок
Crys
То есть у нас была загружена картинка
Вот и именно что изначально не известно какую картинку надо прелоудить.
Хотя....
То есть у нас была загружена картинка (фоном, или просто в нулевой img), потом после загрузки страницы мы делаем document.write('<img src="эта_картинка"') и надо сделать так, чтобы она кэшировалась?
например, если это верно, то для ие 6 как бы вы закешировали? C учетом что серверную сторону я не могу трогать и не контролирую заголовки что шлет сервер.
 

Crys

Двинутый новичок
C учетом что серверную сторону я не могу трогать и не контролирую заголовки что шлет сервер.
А вот про это не было раньше сказано. Скорее всего никак, насколько я помню. Как вариант - проверьте существующие методы под IE7.. если нормально кэшируется, то про шестой IE я бы забыл.

-~{}~ 29.09.08 00:31:

А хотя нет.. в седьмом такая же беда..
 
Сверху