[英]How to tell whether the $(window).load()/window.onload event has already fired?
我有一個腳本,通過另一個腳本動態插入。 該腳本中的代碼包含在$(window).load()
事件中,因為它要求頁面上的圖像全部加載。 在某些瀏覽器中,它可以正常工作,但在其他瀏覽器中它似乎不會觸發,因為在運行代碼時頁面已經完成加載。
有沒有辦法檢查並查看頁面是否已經完成加載 - 通過jQuery還是JavaScript? (包括圖片)
在這種情況下,我無法訪問原始文檔的onload
事件(除了通過加載的腳本更改它 - 但這似乎會出現同樣的問題)。
任何想法/解決方案/建議將不勝感激!
您可以嘗試設置通過超時調用的處理程序,該處理程序將檢查圖像以查看其屬性是否可用。 清除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
}
我寫了一個可能有用的插件: http : //plugins.jquery.com/project/window-loaded
我認為如果你使用$(document).ready而不是$(window).load,你的問題就會自行解決 - 請參閱jquery文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.