2009-06-18 66 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>