JavaScript и IE7 - Почему мой * .onload = function () {} не срабатывает?

У меня есть галерея, которую я быстро закодировал для небольшого сайта, и в Firefox 3 и Safari 3 все работает нормально. Но когда я тестирую свой старый лучший друг IE7, кажется, что он не запускает imageVar.onload = function () {// здесь код} .. который я хочу использовать, чтобы остановить эффект загрузки и загрузить изображение.

Пожалуйста, запомни...

  • Я знаю, что эскизы - это просто уменьшенная версия более крупных изображений. Когда изображения будут завершены клиентом, я создам соответствующие эскизы.
  • Это моя первая попытка по большей части избавиться от процедурного JavaScript ... так что, пожалуйста, не торопитесь и любезно дайте мне знать, где мой код - отстой!

person alex    schedule 21.11.2008    source источник


Ответы (3)


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

Связанная информация в этом вопросе:

обратный вызов Javascript для загрузки изображений

person keparo    schedule 21.11.2008
comment
Я добавил ссылку на ответ, который включает пример фрагмента. - person keparo; 21.11.2008

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

вместо:

 window.load = function(){ 
      //actions to be performed on window load
 }

 imageViewer.image.onload = function(){ 
     //actions to be performed on image load
 }

Do:

$(window).load(function(){ 
    //actions to be performed on window load
});

 $(imageViewer.image).load(function(){ 
      //actions to be performed on image load
 });
person Eran Galperin    schedule 21.11.2008
comment
Странно это, часть галереи сейчас работает ... щелчок по миниатюрам некоторых изображений заставляет изображение появляться справа, но не на миниатюрах других изображений. Странно звучит что ли? Большое спасибо за ваш вклад. - person alex; 21.11.2008

Просто чтобы добавить к предложению Эрана использовать встроенные обработчики событий jQuery, вы можете запускать код, когда документ загружен и DOM создается, но до загрузки изображений с помощью:

$(document).ready(function(){
   //your code
});
person Vincent Ramdhanie    schedule 21.11.2008