powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / IE, не загружает картинки, сформированные динамически через DOM
17 сообщений из 17, страница 1 из 1
IE, не загружает картинки, сформированные динамически через DOM
    #36530694
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Данный код отрабатывает нормально в FF,Opera, но не хочет работать в IE 6.0:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function onClick() {
   d = document.createElement("div");
   i = document.createElement("img");
   i.src = "/images/someImage.gif";
   d.appendChild(i);
   document.body.appendChild(d);
}

Эту функцию вызываю когда уже загружена страница. Она добавляет в конец документа div с картинкой, но сама картинка то отображается то нет. Чаще всего не отображается.
Я так понимаю - если картинка в кеше у него - то он ее поставит. если нет в кеше - то не поставит?
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36530796
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Второй опыт:
Код: plaintext
1.
2.
3.
4.
5.
function onClick() {
   var i = new Image();
   i.src = "/images/someImage.gif";
   document.body.appendChild(i);
}

1) начинаю добавлять image вконец документа с помощью функции onClick(). IE не отображает картинку.
2) во втором окне IE - просто тупо шлю гет запрос на картинку, она грузится и попадает в кеш
3) повторяю п.1 - картинка начинает отображаться

Что за ерунда. Как сделать чтобы при динамическом создании новых узлов DOM-картинок - они сразу же и подгружались по человечески?
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36530815
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirage,

Чеснслово, очень часто создаю картинки, типа, как Вы написали в посте №1. Всё всегда работает. Может, где-то в другом месте ошибка?
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36531094
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделайте i.src = "…" последней операцией.

Jah loves you.
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36531341
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyСделайте i.src = "…" последней операцией.

Jah loves you.

Сделал, так вот если если при этом функцию onClick вызывать раз в 5 секунд например (тоесть медленно) - то картинки создаются и добавляются.
А если очень быстро вызвать функцию (раз в секунду или меньше), то картинки добавляются через одну, тоесть часть картинок "поломанные", часть - нормальные.
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36531379
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тоесть напрашивается вывод - картинка в ие должна загрузиться полностью (пусть даже и из кеша) и прикрепиться к узлу. тогда ее можно добавлять в дом-дерево?

ну а если у меня в AJAX-запросе приходит массив объектов, которые я потом преобразую в картинки в цикле и добавляю в документ - мне чтож - придется делать искусственную задержку?
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36531387
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это баг IE6.
В знаменитом патче Макса Про та же фигня проявлялась, на IE6 работало нестабильно
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36531450
зы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вспоминаю танцы с бубнами вокруг ie6 и динамической вставкой в сложные лэйауты... Помнится от безысходности иногда помогали даже такие антинаучные методы, как передергивание
container.display='none';
container.display='';
у контейнера с глючащим объектом. Как вариант - проделать то же с visibility.
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36531452
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так прокатывает. По крайней мере не добавляет "поломанных" картинок.

Код: plaintext
1.
2.
3.
4.
5.
var i = new Image();
i.src = "/images/someImage.gif";
i.onload = function() {
   document.body.appendChild(i);
}
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36531455
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ornmirageв цикле
От цикла можно избавиться:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function imgOnload(){
    d = document.createElement("div");
    i = document.createElement("img");
    d.appendChild(i);
    document.body.appendChild(d);
    i.attachEvent("onload", imgOnload); 
    i.src = "/images/someImage.gif";
}    

Можно задать первому рисунку обработчик onload, в котором задать onload второму и т.д. по цепочке.

Jah loves you.
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36531463
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariyornmirageв цикле
От цикла можно избавиться:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
function imgOnload(){
    d = document.createElement("div");
    i = document.createElement("img");
    d.appendChild(i);
    document.body.appendChild(d);
    i.attachEvent("onload", imgOnload); 
    i.src = "/images/someImage.gif";
}    

Можно задать первому рисунку обработчик onload, в котором задать onload второму и т.д. по цепочке.

Jah loves you.
Спасибо за интересное решение, попробую так тоже сделать.
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36531469
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirageВот так прокатывает. Так красивше, но в IE6 могут быть утечки памяти из-за замыканий :)
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36531495
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirageВот так прокатывает. По крайней мере не добавляет "поломанных" картинок.

Код: plaintext
1.
2.
3.
4.
5.
var i = new Image();
i.src = "/images/someImage.gif";
i.onload = function() {
   document.body.appendChild(i);
}
Это навело меня на бредовую мысль
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function ImOnError(e) {
  e = e || window.event;
  vat im = e.target || e.srcElement;
  im.prm  = im.prm +  1 ;
  im.src = im.prmSrc + "?p=" + im.prm;
}


var i = new Image();
i.prm =  0 ;
i.src = "/images/someImage.gif";
i.prmSrc = "/images/someImage.gif";
i.onerror = ImOnError;
document.body.appendChild(i);

обрабатываем onerror (не загрузилось), пытаемся снова. "?p=" + im.prm - для того, чтоб урл поменялся и произошла попытка загрузки.

IE6 под рукой нет...
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36531497
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyunicornmirageВот так прокатывает. Так красивше, но в IE6 могут быть утечки памяти из-за замыканий :)Не просто могут быть, а будут. :)
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36531569
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечЭто навело меня на бредовую мысль
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
function ImOnError(e) {
  e = e || window.event;
  vat im = e.target || e.srcElement;
  im.prm  = im.prm +  1 ;
  im.src = im.prmSrc + "?p=" + im.prm;
}


var i = new Image();
i.prm =  0 ;
i.src = "/images/someImage.gif";
i.prmSrc = "/images/someImage.gif";
i.onerror = ImOnError;
document.body.appendChild(i);

обрабатываем onerror (не загрузилось), пытаемся снова. "?p=" + im.prm - для того, чтоб урл поменялся и произошла попытка загрузки.

IE6 под рукой нет...

Решение супер!!! Всё работает как по маслу, большое спасибо!
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36531584
unicornmirage
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А это не зациклит браузер если будет картинка недоступна? Может сделать защиту - количество попыток?
...
Рейтинг: 0 / 0
IE, не загружает картинки, сформированные динамически через DOM
    #36531590
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unicornmirageА это не зациклит браузер если будет картинка недоступна? Может сделать защиту - количество попыток?Можно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
function ImOnError(e) {
  e = e || window.event;
  vat im = e.target || e.srcElement;
  if(im.prm >  10 ) {return;}
  im.prm  = im.prm +  1 ;
  im.src = im.prmSrc + "?p=" + im.prm;
}

...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / IE, не загружает картинки, сформированные динамически через DOM
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]