Ответ 1
Вы можете попробовать настроить обработчик, который вызывается через тайм-аут, который будет проверять изображения, чтобы узнать, доступны ли их свойства. Очистите таймер в обработчике событий load
, поэтому, если сначала произойдет событие загрузки, таймер не загорится. Если свойства недоступны, событие загрузки еще не запущено, и вы знаете, что в конечном итоге ваш обработчик будет вызван. Если они есть, то вы знаете, что событие загрузки произошло до того, как ваш обработчик был установлен, и вы можете просто продолжить.
Псевдокод
var timer = null;
$(function() {
$(window).load( function() {
if (timer) {
clearTimeout(timer);
timer = null;
}
process();
});
timer = setTimeout( function() {
if (checkAvailable())
process();
}
}, 10*1000 ); // waits 10 seconds before checking
});
function checkAvailable()
{
var available = true;
$('img').each( function() {
try {
if (this.height == 0) {
available = false;
return false;
}
}
catch (e) {
available = false;
return false;
}
});
return available;
}
function process() {
... do the real work here
}