Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Событие load (https://javascript.ru/forum/jquery/5491-sobytie-load.html)

Kolyaj 19.10.2009 14:44

Цитата:

Сообщение от Leksiy
но хотелось бы вызывать функцию используя событие load из библиотеки jquery.

Свойство complete вам в помощь.

Leksiy 19.10.2009 15:02

Большое спасибо. Вашим способом работает как часы. Хотя я выполнял все инструкции по документации jquery всетаки мне кажется что событие load еще сырое, сейчас я заметил, что и в IE не всегда срабатывает, а в firefox срабатывает всегда. И еще вопрос... Как проверить загрузку div со всеми вложенными в нее картинками?

Kolyaj 19.10.2009 15:17

Цитата:

Сообщение от Leksiy
событие load еще сырое

Нормально с ним все, просто картинки иногда могут грузиться мгновенно.
Цитата:

Сообщение от Leksiy
Как проверить загрузку div со всеми вложенными в нее картинками?

div или есть, или его нет. У него нет состояния загрузки.

Leksiy 19.10.2009 15:33

complete на сколько я знаю - это событие получения AJAX ответа

Kolyaj 19.10.2009 15:40

Это не событие, а свойство объекта img.

x-yuri 19.10.2009 20:11

Цитата:

Сообщение от Leksiy
событие load еще сырое

пользователи jQuery хотят, чтобы событие load возникало один раз после загрузки изображения, и не важно, что изображение давным-давно загружено, а вот только сейчас мы назначили обработчик :D

Leksiy 19.10.2009 22:47

Вот, что у меня получилось. Событие onload объекта img выполняется когда картинка начнет загружаться. Свойство complete объекта img принимает значение true когда картинка загружена, но в некоторых браузерах принимает значение true всегда даже когда картинка не загружена. В документации jQuery сказано, что событие load на картинку выполнится после загрузки картинки, но это срабатывает не всегда. И вот, что я сделал…
На картинке в событии load написал следующее:
<img id=’my_img’ src=’my_img.jpg’ onload=”$(‘#my_img’).bin(‘load’, my_function)”>
А в файле js описал мою функцию:
function my_function()
{
alert(‘Yes’);
}
И таким образом получилось, что моя команда alert всегда срабатывает после загрузки картинки, также при перезагрузке страницы. Это я проверил в IE6, IE7, Opera10, Firefox, Google Chrome, Safari, Только не проверил в Opera9. Ну и бог с ним.

Спасибо всем, кто помог мне в этой проблеме.

x-yuri 20.10.2009 01:37

Цитата:

Сообщение от Leksiy
Свойство complete объекта img принимает значение true когда картинка загружена, но в некоторых браузерах принимает значение true всегда даже когда картинка не загружена.

можно поименно?

Цитата:

Сообщение от Leksiy
В документации jQuery сказано, что событие load на картинку выполнится после загрузки картинки, но это срабатывает не всегда.

в теме уже 5 раз прозвучало, что если load не срабатывает, значит обработчик был назначен после того, как картинка загрузилась. Допустим есть такой код
setTimout(function() {
  $('img').load(function() { alert(1); })
}, 60*60*1000);

должен ли сработать обработчик через час, если картинка загрузилась за пару секунд?

Kolyaj 20.10.2009 08:43

Цитата:

Сообщение от Leksiy
<img id=’my_img’ src=’my_img.jpg’ onload=”$(‘#my_img’).bin(‘load’, my_function)”>

В событии load у элемента навешивать у него обработчик события load. Такого трэша я еще не видел.


Часовой пояс GMT +3, время: 12:46.