Событие load
Здравствуйте!
У меня есть своя страничка, гдя я использую jQuery. В моем скрипте я проверяю загружена ли картинка с помощью события load. После загрузки картинки я скрываю рисунок с прелоадером. До недавнего времени все работало. $('#my_img').load(function(){my comand}); Но я обновил OPERA до OPERA 10 и теперь скрипт работает только при первом выполнении. В дальнейшем событие load на картинку в OPERA 10 не срабатывает, будет срабатывать только если полностью перезагрузить OPERA и опять сработает только первый раз. Как я понимаю OPERA берет картинку из кэша. Как выполнить проверку загрузки картинки? Может есть другой способ? Или как бороться с этим в OPERA? Большое спасибо за внимание!!!!! |
юзай $.live либо плагин livequery, он в отличие от стандартного работает в IE
|
Цитата:
|
оно не срабатывает потому, что картинка уже загружена. Что находится в обработчике?
|
Цитата:
$('#my_img').load(function (){alert('Yes')}); И эта команда срабатывает везде в чтом числе в ОПЕРА10, но в ОПЕРА 10 только один раз, даже если открыть новую вкладку и зайти на страницу. Если закрыть ОПЕРу и включить заново, опять скрипт сработает 1 раз. Как я понял ОПЕРА берет картинку из кэша и событие load не срабатывает. Хотя, по идее, все браузеры так делают, но при этом load у них срабатывает каждый раз. |
src картинки после навешивания события выставляете?
|
Цитата:
код HTML <img id="my_img" src="my_page/my_img.jpg"> Код javascript я показал. Никакого изменения src нет, но load должен сработать после события загрузки картинкки. Эфект как я уже говорил. |
Цитата:
<img id="my_img" src="my_page/my_img.jpg" onload="alert('yes');"> |
<img id="my_img" src="my_page/my_img.jpg" onload="alert('yes');">[/quote] Согласен с Вами на все 100%. Так работает во всех браузерах, но хотелось бы вызывать функцию используя событие load из библиотеки jquery. Не понятно почему не всегда отлавливаются эти события. Использовать команду bind для связи своей функции с событием не помогает. |
Цитата:
Цитата:
|
Цитата:
|
Большое спасибо. Вашим способом работает как часы. Хотя я выполнял все инструкции по документации jquery всетаки мне кажется что событие load еще сырое, сейчас я заметил, что и в IE не всегда срабатывает, а в firefox срабатывает всегда. И еще вопрос... Как проверить загрузку div со всеми вложенными в нее картинками?
|
Цитата:
Цитата:
|
complete на сколько я знаю - это событие получения AJAX ответа
|
Это не событие, а свойство объекта img.
|
Цитата:
|
Вот, что у меня получилось. Событие 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. Ну и бог с ним. Спасибо всем, кто помог мне в этой проблеме. |
Цитата:
Цитата:
setTimout(function() { $('img').load(function() { alert(1); }) }, 60*60*1000); должен ли сработать обработчик через час, если картинка загрузилась за пару секунд? |
Цитата:
|
Часовой пояс GMT +3, время: 12:21. |