窗口之间究竟有什么区别。Onload事件和body标签的Onload事件?我什么时候使用哪个,应该如何正确地做?
当前回答
一般来说,我更喜欢不使用<body onload="">事件。我认为尽可能地将行为与内容分离会更干净。
也就是说,在某些情况下(通常对我来说非常罕见),使用身体负载可以轻微提高速度。
我喜欢使用Prototype,所以我通常把这样的东西放在我页面的<head>:
document.observe("dom:loaded", function(){
alert('The DOM is loaded!');
});
or
Event.observe(window, 'load', function(){
alert('Window onload');
});
以上是我在这里学到的技巧。我非常喜欢在HTML之外附加事件处理程序的概念。
(编辑以纠正代码中的拼写错误。)
其他回答
<body onload="">应该覆盖window.onload。
对于<body onload="">, document.body.onload可能是空的,未定义的或一个函数,这取决于浏览器(尽管getAttribute("onload")应该在某种程度上保持一致,以字符串形式获取匿名函数体)。与窗口。Onload,当你给它分配一个函数时,窗口。Onload将是一个跨浏览器一致的函数。如果这对你很重要,使用window.onload。
窗口。onload是更好的从你的内容分离JS。没有太多理由使用<body onload="">;不管怎样,你可以使用window。onload。
在Opera中,窗口的事件目标。Onload和<body Onload ="">(甚至窗口。addEventListener("load", func, false))将是窗口,而不是像Safari和Firefox中的文档。但是,“this”将是跨浏览器的窗口。
这意味着,在重要的时候,您应该打包这些东西,使它们保持一致,或者使用一个为您做这件事的库。
没有区别…
所以基本上你可以两者都用(一次一个!-)
但是为了可读性和html代码的整洁,我总是更喜欢窗口。onload !啊)
把onload看作任何其他属性。例如,在输入框中,你可以输入:
<input id="test1" value="something"/>
或者你可以拨打:
document.getElementById('test1').value = "somethingelse";
onload属性的工作方式与此相同,只不过它接受一个函数作为值,而不是像value属性那样接受一个字符串。这也解释了为什么你只能使用其中的一个——调用窗口。Onload为body标签重新分配Onload属性的值。
另外,就像其他人说的那样,通常将样式和javascript与页面内容分开会更干净,这就是为什么大多数人建议使用window。onload或类似jQuery的ready函数。
一般来说,我更喜欢不使用<body onload="">事件。我认为尽可能地将行为与内容分离会更干净。
也就是说,在某些情况下(通常对我来说非常罕见),使用身体负载可以轻微提高速度。
我喜欢使用Prototype,所以我通常把这样的东西放在我页面的<head>:
document.observe("dom:loaded", function(){
alert('The DOM is loaded!');
});
or
Event.observe(window, 'load', function(){
alert('Window onload');
});
以上是我在这里学到的技巧。我非常喜欢在HTML之外附加事件处理程序的概念。
(编辑以纠正代码中的拼写错误。)
窗口。onload= myOnloadFunc and <body onload="myOnloadFunc();>是使用同一事件的不同方式。使用窗口。onload没有那么突兀——它将JavaScript从HTML中剥离出来。
All of the common JavaScript libraries, Prototype, ExtJS, Dojo, JQuery, YUI, etc. provide nice wrappers around events that occur as the document is loaded. You can listen for the window onLoad event, and react to that, but onLoad is not fired until all resources have been downloaded, so your event handler won't be executed until that last huge image has been fetched. In some cases that's exactly what you want, in others you might find that listening for when the DOM is ready is more appropriate - this event is similar to onLoad but fires without waiting for images, etc. to download.