Когда срабатывает image.onload?
Здравствуйте. Помогите разобратся с image.onload. У меня image.onload срабатывает до полной загрузки изображения (непонятно когда) и даже если изображения нет. Пример:
var i = new Image(); i.src = 'image.jpg'; // существующее изображение i.onload = alert(i.width); Все браузеры, кроме Оперы (Firefox, IE, Chrome) выводят 0. Повторный прогон того самого (закешированого) изображения выводит реальную ширину. Также реальная ширина выводится если выполнение онлоад задержать(setTimeout). Если изображения нет, то все браузеры выводят 0 (почему не "undefined"?). Обьясните пожалуйста что да как. |
ну, мягко говоря вам следует подучить основы
var i = new Image(); //создаем объект рисунка i.src = 'image.jpg'; // инициируем загрузку рисунка //при этом если рисунок грузится с локальной машины, либо из кеша, то он будет загружен до выполнения следующей строки кода //как результат, обработчик Onload не будет выполнен i.onload = alert(i.width);//выполняем функцию alert, и результат ее выполнения присваиваем в качестве обработчика события //то есть alert всегда будет выполнятся правильно делать так: var i = new Image(); i.onload = function(){alert(i.width);} //1. назначем обработчик события до того, как начнется загрузка рисунка. //таким образом событие сработает, при загрузке рисунка //2. выполение alert-а обрачиваем в анонимную функцию, которая выставляется в качестве обработчика события i.src = 'image.jpg'; // существующее изображение |
А как потом использовать в документе тот презагруженый рисунок?
Через innerHTML = '<img src='+src+' />'; ? |
Цитата:
var i = new Image(); i.onload = function(){alert(i.width); someElement.appendChild(i); } //1. назначем обработчик события до того, как начнется загрузка рисунка. //таким образом событие сработает, при загрузке рисунка //2. выполение alert-а обрачиваем в анонимную функцию, которая выставляется в качестве обработчика события i.src = 'image.jpg'; // существующее изображение |
Часовой пояс GMT +3, время: 07:17. |