преждевременно отрабатывает image.onload
Здраствуйте увожаемые форумчане.
Столкнулся с такой проблемой: Есть простенький скриптик который должен делать следующее: 1. Отображать некое изображение 2. Фоном подгружать второе изображение(большего размера) 3. При загрузке второго изображения подменять первое на второе Вродебы все просто, собственно сам скрипт: container = document.createElement('div') // создаем контейнер в котором будем подменять изображения img1=document.createElement('img'); img1.src='1.jpg'; container.appendChild(img); //первое изображение отображаем сразу Img2=document.createElement('img'); Img2.onload=onLoadEventHandles(); Img2.src='2.jpg'; //второму вешаем обработчик на загрузку function onLoadEventHandles() { container.innerHTML=''; container.appendChild(Img2); } // после загрузки удаляем первое изображение и отображаем второе Однако событие отрабатывает сразу, и я наслаждаюсь картиной построчной прогрузки изобраения. Сразу оговорюсь, работаю над этим скриптом на локальном сервере, для имитации медленой сети использую встроеный в Cromium "эмулятор GPRS" Собственно я вижу сдесь несколько вариантов: 1. Это тонкости работы "'эмулятора GPRS" 2. Я чегото не понимаю в механизме работы события 'load' 3. Я дурак и наделал глупых ошибок и не в состоянии найти их самостоятельно Ктонибудь сталкивался с подобным? Есть идеи как это лечить? Зарание благодарен. |
Img2 = document.createElement('img'); Img2.addEventListener('load', function(e) { container.removeChild(img1); container.appendChild(this); }); Img2.src = '2.jpg'; |
пробовал, результат тот же, в принципе без разницы как я вешаю событие через onload, addEventListener, или атрибутом HTML результаты теже.
|
Решил, нужно было обернуть вызов onLoadEventHandles() в анонимную функцию.
Получалось что я вешал в качестве обработчика результат выполнения функции а не саму функцию. |
Цитата:
Цитата:
|
Skrip,
container = document.createElement('div') // создаем контейнер в котором будем подменять изображения img1=document.createElement('img'); img1.src='1.jpg'; container.appendChild(img); //первое изображение отображаем сразу Img2=document.createElement('img'); Img2.onload=onLoadEventHandles; Img2.src='2.jpg'; //второму вешаем обработчик на загрузку function onLoadEventHandles() { img1.src = this.src } // после загрузки удаляем первое изображение и отображаем второе |
Эт я понял, мне просто нужно будет в дальнейшем еще и параметр передовать в функцию, но все авно спасибо
|
Часовой пояс GMT +3, время: 08:44. |