Я подозреваю, что это связано с тем, что (если изображение находится в кэше браузера), оно может быть загружено сразу после создания.Если обработчик «load» подключен после создания, то событие load уже сработало до того, как был подключен ваш обработчик, и ваш обработчик загрузки никогда не будет вызван.
Обычно вы решаете эту проблему, чтобы убедиться, что ваш кодидет в следующем порядке:
var myImg = new Image();
myImg.onload = myLoadFunc;
myImg.src = "set URL here";
Это гарантирует, что обработчик загрузки будет установлен до загрузки изображения.
Ваш пример кода определенно подвержен этой проблеме при созданииполностью указанные теги изображений перед присоединением обработчика загрузки.
Пример Дэвида, вероятно, не работает, потому что ".live" полагается на распространение события, которое, я не думаю, работает для события загрузки (я думаю, что это было в основномпредназначен для событий мыши или клавиш).
Если вам нужно запустить событие загрузки, вам нужно будет создать объект изображения (пока на нем не установлен src), прикрепить обработчик загрузки и затем установить srcчтобы убедиться, что вы получите событие загрузки.Также возможно создать HTML, затем присоединить событие загрузки и затем проверить, загружено ли уже изображение, и если это так, вызвать событие загрузки вручную, хотя это не так безопасно, как в моем примере кода выше.Если вы создаете изображение из HTML, также безопасно указать обработчик загрузки в HTML.