窗口之间究竟有什么区别。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之外附加事件处理程序的概念。

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

其他回答

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

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

没有区别…

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

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

两者没有区别,但两者都不能用。

在许多浏览器中,窗口。Onload事件不会触发,直到所有图像都已加载,这不是你想要的。基于标准的浏览器有一个名为DOMContentLoaded的事件,该事件较早触发,但IE不支持(在撰写本文时)。我建议使用支持跨浏览器DOMContentLoaded特性的javascript库,或者找到一个编写良好的函数。jQuery的$(document).ready()就是一个很好的例子。

如果你试图编写不引人注目的JS代码(你应该),那么你不应该使用<body onload="">。

这是我的理解,不同的浏览器处理这两个略有不同,但他们的操作相似。在大多数浏览器中,如果同时定义了两者,其中一个将被忽略。

窗口。Onload可以在没有身体的情况下工作。只使用脚本标记创建页面,并在浏览器中打开它。该页面不包含任何主体,但它仍然可以工作。

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