窗口之间究竟有什么区别。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”将是跨浏览器的窗口。
这意味着,在重要的时候,您应该打包这些东西,使它们保持一致,或者使用一个为您做这件事的库。
两者没有区别,但两者都不能用。
在许多浏览器中,窗口。Onload事件不会触发,直到所有图像都已加载,这不是你想要的。基于标准的浏览器有一个名为DOMContentLoaded的事件,该事件较早触发,但IE不支持(在撰写本文时)。我建议使用支持跨浏览器DOMContentLoaded特性的javascript库,或者找到一个编写良好的函数。jQuery的$(document).ready()就是一个很好的例子。
窗口。Onload可以在没有身体的情况下工作。只使用脚本标记创建页面,并在浏览器中打开它。该页面不包含任何主体,但它仍然可以工作。
<script>
function testSp()
{
alert("hit");
}
window.onload=testSp;
</script>
把onload看作任何其他属性。例如,在输入框中,你可以输入:
<input id="test1" value="something"/>
或者你可以拨打:
document.getElementById('test1').value = "somethingelse";
onload属性的工作方式与此相同,只不过它接受一个函数作为值,而不是像value属性那样接受一个字符串。这也解释了为什么你只能使用其中的一个——调用窗口。Onload为body标签重新分配Onload属性的值。
另外,就像其他人说的那样,通常将样式和javascript与页面内容分开会更干净,这就是为什么大多数人建议使用window。onload或类似jQuery的ready函数。
它们的工作原理相同。但是,请注意,如果定义了两者,则只调用其中一个。我通常避免直接使用它们中的任何一个。相反,您可以将事件处理程序附加到加载事件。通过这种方式,你可以更容易地合并其他可能也需要附加回调到onload事件的JS包。
任何JS框架都有用于事件处理程序的跨浏览器方法。
推荐文章
- (深度)使用jQuery复制数组
- 你从哪里包含jQuery库?谷歌JSAPI吗?CDN吗?
- 在setInterval中使用React状态钩子时状态不更新
- 使用JavaScript显示/隐藏'div'
- 使用JavaScript获取所选的选项文本
- AngularJS模板中的三元运算符
- 让d3.js可视化布局反应灵敏的最好方法是什么?
- 原型的目的是什么?
- 检查jquery是否使用Javascript加载
- 将camelCaseText转换为标题大小写文本
- 如何在JavaScript客户端截屏网站/谷歌怎么做的?(无需存取硬盘)
- 如何在JavaScript中遍历表行和单元格?
- jQuery map vs. each
- 自定义异常类型
- 窗口。Onload vs <body Onload =""/>