onload=function 与 window.onload=function

2024-02-07

使用 window.onload=function(){}; 有什么真正的优势吗?超过 onload=function(){}; ?我知道 window.onload 看起来更合适,但这不是我选择它的好理由,特别是它比 onload 更长/更慢。

经过一些耗时的搜索和测试,这 2 种是唯一的 2 种浏览器兼容方法,测试(在相对较新的 Chrome/Firefox 版本和 IE 5.5 到 9 上)包括:

window.onload // works in all tested browsers
onload // works in all tested browsers, faster than window.onload
document.onreadystatechange // works twice in some browsers, once in some others, could be confusing
window.onpageshow // works in chrome and firefox, not in IE
window.onreadystatechange // doesn't work
document.onload // doesn't work
document.onpageshow // doesn't work
window.document.onload // doesn't work

我可以找到这篇文章,它是最适合我的问题的文章之一:

http://perfectionkills.com/onloadfunction-considered-harmful/ http://perfectionkills.com/onloadfunction-considered-harmful/

它指出严格模式ECMA-262 第 5 版 http://www.ecma-international.org/publications/standards/Ecma-262.htm (“严格使用”;我不打算在我的项目中使用)最终可能会导致某些浏览器与 onload 不兼容(Firefox 和 Opera 中的 ReferenceError )。

所以问题是:除了“use strict;”之外,使用直接 onload 分配是否有任何真正的缺点?一?我需要信息而不是一些无法解释的意见。

Thanks

Note:在问这个问题之前我做了搜索(我知道这看起来有点经典),我能找到的最接近的问题是关于window.onload 与 , window.onload 的其他替代方案, etc.

Edit:我创建了这个测试用例onload 与 window.onload http://jsperf.com/onload-window-onload,这证明了 onload 的速度有多快。我真的会进行这种微观优化,因为为什么不呢?他们有时可以很酷。


两者是相同的...当您单独调用 onload 时,javascript 会假定它是一个全局属性,即 window 对象的属性。所以基本上如果你没有具体说它是 window.onload 那么 javascript 引擎会为你做这件事。

if (onload === window.onload) {
   alert("it's the same");  //true
}

因此,只要您不关心严格模式,现代浏览器就不会有任何问题。然而,使用完整的 window.onload 而不是仅仅使用 onload 被认为更好。如果不输入额外的 7 个字符,您不会获得太多好处。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

onload=function 与 window.onload=function 的相关文章

随机推荐