窗口之间究竟有什么区别。Onload事件和body标签的Onload事件?我什么时候使用哪个,应该如何正确地做?


当前回答

<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”将是跨浏览器的窗口。

这意味着,在重要的时候,您应该打包这些东西,使它们保持一致,或者使用一个为您做这件事的库。

其他回答

<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”将是跨浏览器的窗口。

这意味着,在重要的时候,您应该打包这些东西,使它们保持一致,或者使用一个为您做这件事的库。

将内容、布局和行为分开是一个公认的标准。因此window.onload()将比<body onload="">更适合使用,尽管两者都做同样的工作。

窗口。onload -在所有DOM, JS文件,图像,Iframes,扩展和其他完全加载后调用。这等于$(window).load(function() {});

<body onload=""> - DOM加载后调用。这等于$(document).ready(function() {});

没有区别…

所以基本上你可以两者都用(一次一个!-)

但是为了可读性和html代码的整洁,我总是更喜欢窗口。onload !啊)

对一个客观问题给出这么多主观答案。“低调”JavaScript是迷信,就像永远不要使用gotos的旧规则一样。以一种能够帮助您可靠地实现目标的方式编写代码,而不是按照某人流行的宗教信仰编写代码。

任何发现:

 <body onload="body_onload();">

过分分散注意力是过分自命不凡的,而且没有明确自己的优先事项。

我通常把JavaScript代码放在一个单独的.js文件中,但我发现在HTML中挂钩事件处理程序并不麻烦,顺便说一下,这是有效的HTML。