2015-06-22 74 views
1

我的加載事件並不總是在safari中激活或在mac上激活(safari版本7.0.5,chrome版本43.0.2357.124)。它在Firefox和我的任何一個Windows瀏覽器都能正常工作。mac窗口加載並不總是觸發

window.addEventListener('load', function(){ 
    alert("loaded js"); 
}, false); 

$(window).bind("load", function() { 
    alert("loaded jquery"); 
}); 

這兩個函數都會觸發,或者它們都沒有。

有人知道這裏發生了什麼嗎?

感謝您的幫助。

+0

如果您使用JQ - 爲什麼不使用JQ DOM Ready? https://learn.jquery.com/using-jquery-core/document-ready/ –

+0

@ Stuart.Sklinar - 因爲它在文檔的依賴加載之前運行。 – Quentin

+1

總是讓這樣的演示頁面向社區發佈問題:http://jsbin.com/dunapu/edit?html,output通過這個演示,在我看來,一切都很好.... –

回答

2

由於JS是在一個單獨的文件,我可以想象,在它運行時,load事件已被解僱。
但是,您可以使用document.readyState(另請參閱this question)檢測到此情況。
它有三個可能的值:

  • loading - 解析還在進行
  • interactive - 解析完成,但資源加載
  • complete - 考取已完成和資源已加載

我建議你檢查一下document.readyState == 'complete'是否運行你的代碼,否則註冊一個事件監聽器:

~function() 
{ 
    var loadJS = function() 
    { 
     alert("loaded js"); 
    }; 
    var loadJQ = function() 
    { 
     alert("loaded jquery"); 
    }; 
    if(document.readyState == 'complete') 
    { 
     loadJS(); 
     loadJQ(); 
    } 
    else 
    { 
     window.addEventListener('load', loadJS, false); 
     $(window).bind('load', loadJQ); 
    } 
}();