Javascript使用window.load进行多个脚本调用
在JavaScript中,使用onload =
无法分配多个事件处理程序 - 第二次分配会覆盖前一次的分配,就像x = 3; x = 6
会使x
变为6
一样。
为了解决这个问题,可以使用.addEventListener()
方法来代替onload
:
// 在一个JS文件中: window.addEventListener('load', function1) // 在下一个JS文件中: window.addEventListener('load', function2)
如果你的代码使用全局变量,那么在两个文件中重复使用可能不起作用,因为它们会互相干扰,尝试使用相同的变量。你可以通过将代码结构化为不使用全局变量或全局函数来解决这个问题,例如将每个文件中的所有代码封装在一个函数中,如下所示:
// 包装函数 (function() { var anyVariableHere; function anyFunction() { } window.addEventListener("load", anyFunction); })(); // 立即运行包装函数
谢谢。我现在已经让它们都运行起来了,确实有冲突。
那我是否需要在包装函数外部再添加一个addEventListener调用来调用包装函数呢?
不需要。注意到该函数末尾有()
- 这会立即调用它,正如代码中的注释所述。这被称为“立即调用的函数表达式”或IIFE。更多详情请参考:benalman.com/news/2010/11/…