Javascript window.onload vs<;车身装载量=”&引用/&燃气轮机;

Javascript window.onload vs<;车身装载量=”&引用/&燃气轮机;,javascript,Javascript,window.onload事件与body标记的onload事件之间的具体区别是什么?我什么时候使用哪一种以及如何正确使用它?没有差异 所以原则上你可以同时使用两个(一次一个!) 但是为了可读性和html代码的干净性,我总是喜欢window.onload!o] 如果您试图编写不引人注目的JS代码(您应该这样做),那么您不应该使用 我的理解是,不同的浏览器处理这两个方面略有不同,但它们的操作方式类似。在大多数浏览器中,如果同时定义这两种浏览器,其中一种浏览器将被忽略。通常,我宁愿不使用事件。我认为尽

window.onload
事件与
body
标记的
onload
事件之间的具体区别是什么?我什么时候使用哪一种以及如何正确使用它?

没有差异

所以原则上你可以同时使用两个(一次一个!)


但是为了可读性和html代码的干净性,我总是喜欢window.onload!o]

如果您试图编写不引人注目的JS代码(您应该这样做),那么您不应该使用


我的理解是,不同的浏览器处理这两个方面略有不同,但它们的操作方式类似。在大多数浏览器中,如果同时定义这两种浏览器,其中一种浏览器将被忽略。

通常,我宁愿不使用
事件。我认为尽可能将行为与内容分开是更干净的

也就是说,在某些情况下(通常对我来说非常罕见),使用身体负荷可以稍微提高速度

我喜欢使用Prototype,所以我通常会在我的页面的
中添加类似的内容:

document.observe("dom:loaded", function(){
  alert('The DOM is loaded!');
});

以上是我学到的技巧。我非常喜欢在HTML之外附加事件处理程序的概念


(编辑以更正代码中的拼写错误。)

它们的工作原理相同。但是,请注意,如果两者都已定义,则只会调用其中一个。我通常避免直接使用它们中的任何一个。相反,您可以将事件处理程序附加到加载事件。通过这种方式,您可以更容易地合并其他可能还需要将回调附加到onload事件的JS包


任何JS框架都会有用于事件处理程序的跨浏览器方法。

window.onload=myOnloadFunc
是使用同一事件的不同方法。不过,使用
window.onload
就不那么显眼了,因为它可以将JavaScript从HTML中去掉


所有常见的JavaScript库、Prototype、ExtJS、Dojo、JQuery、YUI等都提供了关于文档加载时发生的事件的良好包装。您可以侦听窗口onLoad事件,并对此作出反应,但onLoad在下载所有资源之前不会启动,因此在获取最后一个大型映像之前,不会执行事件处理程序。在某些情况下,这正是您想要的,在另一些情况下,您可能会发现在DOM就绪时侦听更合适-此事件类似于onLoad,但在不等待图像等下载的情况下触发。

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

像其他属性一样考虑onload。例如,在输入框上,可以放置:

<input id="test1" value="something"/>
onload属性的工作方式与此相同,只是它将函数作为其值,而不是像value属性那样的字符串。这也解释了为什么“只能使用其中一个”——调用window.onload会为body标记重新分配onload属性的值

此外,正如这里的其他人所说,通常将样式和javascript与页面内容分开比较干净,这就是为什么大多数人建议使用window.onload或jQuery的ready函数。

应该覆盖
window.onload

对于
document.body.onload
可能为null、未定义,或者是一个函数,具体取决于浏览器(尽管
getAttribute(“onload”)
对于以字符串形式获取匿名函数的主体应该是一致的)。使用
window.onload
,当您为其分配一个函数时,
window.onload
将是跨浏览器一致的函数。如果这对您很重要,请使用
window.onload

无论如何,window.onload更适合将JS与内容分离。没有太多理由使用
;无论如何,当您可以使用
window.onload

在Opera中,
window.onload
(甚至
window.addEventListener(“load”,func,false))
的事件目标将是窗口,而不是Safari和Firefox中的文档。但是,“这”将是跨浏览器的窗口


这意味着,在重要的时候,您应该包装crud并使其保持一致,或者使用一个为您提供服务的库。

没有区别,但您不应该使用这两个库


在许多浏览器中,在加载所有图像之前不会触发
窗口.onload
事件,这不是您想要的。基于标准的浏览器有一个名为
DOMContentLoaded
的事件,该事件早些时候触发,但IE不支持(在编写此答案时)。我建议使用支持跨浏览器DOMContentLoaded功能的javascript库,或者找到一个编写良好的函数来使用。jQuery的
$(document).ready()
,就是一个很好的例子

“一个客观问题有这么多主观答案。“不引人注目的”JavaScript是一种迷信,就像旧规则一样,永远不要使用gotos。编写代码的方式要有助于您可靠地完成目标,而不是根据某人的流行宗教信仰

任何人发现:

 <body onload="body_onload();">

过分分心是过分自命不凡的,没有明确的优先顺序


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

window.onload
可以在没有正文的情况下工作。仅使用脚本标记创建页面并在浏览器中打开。该页面不包含任何正文,但仍然有效

<script>
  function testSp()
  {
    alert("hit");
  }
  window.onload=testSp;
</script>

函数testSp()
{
警惕(“击中”);
}
window.onload=testSp;

window.onload
-在所有DOM、JS文件、图像、iFrame、扩展名和其他文件完全加载后调用。这等于 <body onload="body_onload();">
<script>
  function testSp()
  {
    alert("hit");
  }
  window.onload=testSp;
</script>