窗口之间究竟有什么区别。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之外附加事件处理程序的概念。
(编辑以纠正代码中的拼写错误。)
其他回答
没有区别…
所以基本上你可以两者都用(一次一个!-)
但是为了可读性和html代码的整洁,我总是更喜欢窗口。onload !啊)
窗口。onload -在所有DOM, JS文件,图像,Iframes,扩展和其他完全加载后调用。这等于$(window).load(function() {});
<body onload=""> - DOM加载后调用。这等于$(document).ready(function() {});
将内容、布局和行为分开是一个公认的标准。因此window.onload()将比<body onload="">更适合使用,尽管两者都做同样的工作。
把onload看作任何其他属性。例如,在输入框中,你可以输入:
<input id="test1" value="something"/>
或者你可以拨打:
document.getElementById('test1').value = "somethingelse";
onload属性的工作方式与此相同,只不过它接受一个函数作为值,而不是像value属性那样接受一个字符串。这也解释了为什么你只能使用其中的一个——调用窗口。Onload为body标签重新分配Onload属性的值。
另外,就像其他人说的那样,通常将样式和javascript与页面内容分开会更干净,这就是为什么大多数人建议使用window。onload或类似jQuery的ready函数。
如果你试图编写不引人注目的JS代码(你应该),那么你不应该使用<body onload="">。
这是我的理解,不同的浏览器处理这两个略有不同,但他们的操作相似。在大多数浏览器中,如果同时定义了两者,其中一个将被忽略。