タイムアウトを介して呼び出されるハンドラーを設定して、画像をチェックしてプロパティが利用可能かどうかを確認してみてください。イベント ハンドラーでタイマーをクリアしてload
、load イベントが最初に発生した場合にタイマーが起動しないようにします。プロパティが利用できない場合、load イベントはまだ発生しておらず、ハンドラーが最終的に呼び出されることがわかります。そうであれば、ハンドラーが設定される前に 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
}