window.onload
事件和标签的onload
事件到底有什么区别body
?我什么时候使用哪个以及应该如何正确完成?
window.onload 与 <body onload=""/>
window.onload = myOnloadFunc
并且<body onload="myOnloadFunc();">
是使用相同事件的不同方式。不过使用window.onload
并不那么突兀——它会将您的 JavaScript 从 HTML 中提取出来。
所有常见的 JavaScript 库,Prototype、ExtJS、Dojo、JQuery、YUI 等都为文档加载时发生的事件提供了很好的包装器。您可以侦听窗口 onLoad 事件,并对此做出react,但在下载所有资源之前不会触发 onLoad,因此在获取最后一个大图像之前不会执行您的事件处理程序。在某些情况下,这正是您想要的,在其他情况下,您可能会发现在 DOM 准备就绪时进行侦听更为合适——此事件类似于 onLoad,但无需等待图像等下载即可触发。
没有区别,但您不应该使用它们。
在许多浏览器中,window.onload
直到所有图像都加载完毕才会触发该事件,这不是您想要的。基于标准的浏览器有一个名为DOMContentLoaded
which 更早触发的事件,但 IE 不支持(在撰写此答案时)。我建议使用支持跨浏览器 DOMContentLoaded 功能的 javascript 库,或者找到可以使用的编写良好的函数。jQuery 的$(document).ready()
, 就是一个很好的例子。
window.onload
没有身体也能工作。创建只有脚本标签的页面并在浏览器中打开它。该页面不包含任何正文,但它仍然有效..
<script>
function testSp()
{
alert("hit");
}
window.onload=testSp;
</script>
通常,我更喜欢不使用<body onload=""
> 事件。我认为尽可能将行为与内容分开会更干净。
也就是说,在某些情况下(对我来说通常很少见)使用 body onload 可以稍微提高速度。
我喜欢使用 Prototype,所以我通常在<head
我的页面的> 中放置这样的内容:
document.observe("dom:loaded", function(){
alert('The DOM is loaded!');
});
或者
Event.observe(window, 'load', function(){
alert('Window onload');
});
以上是我在这里学到的技巧。我非常喜欢在 HTML 之外附加事件处理程序的概念。
(编辑以更正代码中的拼写错误。)
'一个客观问题的主观答案太多了。“不引人注目”的 JavaScript 是一种迷信,就像从不使用 goto 的旧规则一样。以可帮助您可靠地实现目标的方式编写代码,而不是根据某人的流行宗教信仰。
任何发现:
<body onload="body_onload();">
过于分散注意力是过于自命不凡,并且没有明确他们的优先事项。
我通常将我的 JavaScript 代码放在一个单独的 .js 文件中,但我发现在 HTML 中挂钩事件处理程序没有任何麻烦,顺便说一下,这是有效的 HTML。