2011-06-08 46 views
4

a previous question我瞭解到我的JavaScript中有一個與在DOMReady事件觸發前在BODY元素上使用appendChild有關的錯誤。是否有不使用框架的window.onload的普遍選擇?

我能夠通過將我的代碼包裝在window.onload事件中來解決此問題。讀一下這個,我已經瞭解到window.onload只支持一個監聽器,我不能保證我不會嘲笑別人的監聽器,或者別人的監聽器不是在嘲笑我。

看看$(document).ready(function(){});的來源,我意識到可能有很多這種語法的簡單性。

有沒有一種通用的方式來等待DOMReady事件,而不使用jQuery或其他JS庫?雖然看起來這樣做會訣竅,但我寧願不對第三方庫有任何依賴關係,以便我的代碼正常工作。

回答

5

你可以這樣做:

function addLoadEvent(func) { 
    var oldonload = window.onload; 
    if (typeof window.onload != 'function') { 
    window.onload = func; 
    } else { 
    window.onload = function() { 
     if (oldonload) { 
     oldonload(); 
     } 
     func(); 
    } 
    } 
} 

addLoadEvent(nameOfSomeFunctionToRunOnPageLoad); 
addLoadEvent(function() { 
    /* more code to run on page load */ 
}); 

與附加功能包裝現有onload在一個新的功能。這是從http://www.webreference.com/programming/javascript/onloads/

但是採取了做的文件準備,而不是爲onload(不同的事情,onload事件是當一切都被下載,其中準備的文件被加載時)看看這個問題$(document).ready equivalent without jQuery

+0

上面的內容在使用Mixpanel時會中斷;你需要包含一個事件參數。請參閱:https://github.com/jenkinsci/jenkins/commit/5227403 – 2013-03-12 18:43:00

相關問題