attachEvent/addEventListener to Window onload/load - 首选方式

bry*_*mon 10 javascript javascript-events

我有一个脚本,在页面加载时启动,我一直在使用下面的代码来启动它:

if (window.addEventListener) {
  window.addEventListener('load', otherRelatedParts, false);
}
else if (window.attachEvent) {
  window.attachEvent('onload', otherRelatedParts );
}
Run Code Online (Sandbox Code Playgroud)

但今天我尝试使用这样的自调用函数:

(function() {
otherRelatedParts();
}())
Run Code Online (Sandbox Code Playgroud)

它似乎适用于所有浏览器并且代码较少.这是向窗口加载添加事件的首选方法吗?

Ata*_*hev 11

您的自调用函数将比window.onload更早执行.它将在浏览器读取它时执行.在大多数情况下,它实际上没有任何区别,所以你可以这样使用它.通常在下载所有对象(图像,JavaScript文件等)时引发Window.load.$(document).ready()在window.onload之前触发 - 当DOM准备好进行操作时.


mkl*_*uwe 1

我想上面的if条款是为了解决一些跨浏览器问题而编写的。您应该将这些内容从代码中剔除。

正如其他人以前做过的那样,您也可以使用一些库,例如jQuery。你应该在那里寻找.ready()

  • 要求开发人员使用核心 javascript 的原因有多种,有时像 jQuery 这样的库就显得有些过分了。 (17认同)