Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Использование obj.complete


Автор: quiz 23.9.2007, 01:48
Использую свойство рисунка "document.getElementById(obj).complete" для проверки состояния загрузки.
При первой загрузке страницы все хорошо, но после замены яваксриптом src картинки на другой, во время загрузки новой картинки свойство complete остается true. Видимо браузер видит старую картинку и говорит, что она уже загружена.
Как узнать состояние загрузки новой картинки?

спасибо

Автор: Mymik 23.9.2007, 11:04
quiz, используем поиск -->> http://forum.vingrad.ru/forum/topic-171734/unread-1/hl/onload/index.html

Автор: Ghirik 24.9.2007, 05:06
А что, на вопрос то так ни кто и не ответит?
Спрашивали про complete, а послали подальше smile
Мне то же интересно, как использовать complete, если была смена src.

Автор: dstorm81 24.9.2007, 10:02
не загонялся на эту тему, но как мне кажется
лучше всё картинки сразу подгружать массивов через new Image()
а затем проводить манипуляцию с ними

а как вариант ответа на ваш вопрос, попробовать создавать новую картинку через createElement, с присваиванием уникального id и var.

Автор: smartov 24.9.2007, 11:05
Ghirik, зачем complete если onload работает прелестно?

Автор: Ghirik 24.9.2007, 14:51
Цитата

Ghirik, зачем complete если onload работает прелестно?


Да для предзагрузки, onload вполне достаточен. Но у меня предзагружаются несколько изображений одновременно, и нужно знать все ли они загрузились. Суммировать события onload, как то не красиво, вот и хотелось бы проверять состояние. 

Цитата

а как вариант ответа на ваш вопрос, попробовать создавать новую картинку через createElement, с присваиванием уникального id и var.


Да, я именно так сейчас и сделал, набиваю массив через createElement, но пока ещё не проверял complete, нужно на сервер выкладывать. Проверю отпишусь...

Автор: Ghirik 25.9.2007, 17:16
http://www.door-to.ru/LamerPhotoBlog/scripts/slide_click_.htm, делаю вариант листалки изображений, слегонца запутался.
Я не меняю src, но происходит похожая непонятка. IE выдает complete = false, в Мозилле и Опере нормально.

Автор: Ghirik 25.9.2007, 18:58
Нет, всё нормально, http://www.door-to.ru/LamerPhotoBlog/scripts/onload_image_IE.htm. 
Везде true, это у меня в скрипте косяк...

Автор: smartov 25.9.2007, 21:53
В общем то я не совсем понял в чем разница между проверкой complete у каждого объекта и цеплянием onload каждому, но главное что работает smile

Автор: quiz 29.9.2007, 14:10
Цитата(smartov @ 25.9.2007,  21:53)
В общем то я не совсем понял в чем разница между проверкой complete у каждого объекта и цеплянием onload каждому, но главное что работает smile

Попробовал onload - событие не возникает, если изображение уже было загружено и с сервера больше не вытаскивается.
Если ставить на событие onload исчезание надписи "загрузка рисунка", то при показе "старых" картинок надпись висит вечно

Автор: smartov 29.9.2007, 22:51
quiz, 
Цитата(quiz @  29.9.2007,  13:10 Найти цитируемый пост)
Попробовал onload - событие не возникает, если изображение уже было загружено и с сервера больше не вытаскивается.

А как в таком случае использовать complete можешь привести пример работающего кода? Если да - с меня +

Автор: SelenIT 29.9.2007, 23:22
Цитата(quiz @  29.9.2007,  14:10 Найти цитируемый пост)
опробовал onload - событие не возникает, если изображение уже было загружено и с сервера больше не вытаскивается.

Это где так? В Опере, вероятно? И при каких настройках?

Лично мне пока известны лишь одни грабли с onload-ом - http://forum.vingrad.ru/forum/topic-159218/kw-onload-%D0%B0%D0%BD%D0%B8%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-gif-%D0%BF%D0%BE%D0%B2%D1%82%D0%BE%D1%80%D0%BD%D0%BE%D0%B5-%D1%81%D1%80%D0%B0%D0%B1%D0%B0%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5.html...

Автор: quiz 30.9.2007, 09:12
Цитата(smartov @ 29.9.2007,  22:51)
quiz, 
Цитата(quiz @  29.9.2007,  13:10 Найти цитируемый пост)
Попробовал onload - событие не возникает, если изображение уже было загружено и с сервера больше не вытаскивается.

А как в таком случае использовать complete можешь привести пример работающего кода? Если да - с меня +

Ничего сложного 

if (document.getElementById("mypicture").complete) { alert('рисунок загружен'); }

Добавлено через 9 минут и 21 секунду
Цитата(SelenIT @ 29.9.2007,  23:22)
Цитата(quiz @  29.9.2007,  14:10 Найти цитируемый пост)
опробовал onload - событие не возникает, если изображение уже было загружено и с сервера больше не вытаскивается.

Это где так? В Опере, вероятно? И при каких настройках?

Лично мне пока известны лишь одни грабли с onload-ом - http://forum.vingrad.ru/forum/topic-159218/kw-onload-%D0%B0%D0%BD%D0%B8%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B9-gif-%D0%BF%D0%BE%D0%B2%D1%82%D0%BE%D1%80%D0%BD%D0%BE%D0%B5-%D1%81%D1%80%D0%B0%D0%B1%D0%B0%D1%82%D1%8B%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5.html...

В IE. Гиф обычный, не анимированный.
Меняю scr явакриптом, событие onload возникает только если рисунок еще не кешировался браузером.

Автор: SelenIT 30.9.2007, 15:12
quiz, почему-то у меня не воспроизводится. Onload http://silverflame.at.tut.by/gif/gif2.html при любых настройках кеша. Проверял в IE6 SP2 и IE7 standalone.

Автор: smartov 1.10.2007, 10:50
quiz, 
Цитата(quiz @  30.9.2007,  08:12 Найти цитируемый пост)
Ничего сложного 

if (document.getElementById("mypicture").complete) { alert('рисунок загружен'); }

Ха. А как его отлавливать предлагаешь? Таймер заводить? Нет спасибо.
А на счет onload действительно укажи браузер где возникает проблема, и желательно пример

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)