2009-06-18 67 views
0

1.這兩種執行風味有什麼不同?

<div id="test"></div> 
<script type="text/javascript"> 
//operate document.getElementById('test') 
</script> 

2.

<div id="test"></div> 
<script type="text/javascript"> 
window.onload = function() 
{ 
    //operate document.getElementById('test') 
}; 
</script> 

我們能保證的document.getElementById( '測試')只是把JavaScript的下面它的存在?

+1

window.onload不會觸發,直到所有的圖像完成下載,這可能或可能不需要。 – 2009-06-18 20:50:11

回答

5

在我的主觀測試中,它總是這樣工作,是的。 DOM在頁面上按從上到下的順序進行解析,因此如果腳本標記位於要定位的元素下方,它將按順序加載並工作。

window.onload在腳本位於文件頭部,從外部文件加載或其他可能不適合在頁面內嵌的情況下非常有用。

0

http://developer.yahoo.com/yui/event/#onavailable

YUI允許您定義事件處理程序onAvailable,onContentReady和onDOMReady,而不是在window.onload

這些方法將在window.onload火災之前執行

而且onDOMReady是一個更安全的地方對於這樣的代碼,因爲它可以防止IE6發生一些錯誤。在DOM仍在構建的同時添加DOM節點可能會在IE中導致一些模糊的錯誤。

<script type="text/javascript"> 

function init() { 
    //operate document.getElementById('test') 
} 
YAHOO.util.Event.onDOMReady(init); 

// As with addListener, onAvailable, and onContentReady, you can pass a data object and adjust the scope 
// YAHOO.util.Event.onDOMReady(init, data, scope); 

</script> 
<div id="test"></div>