如何设置更多的 window.onload 事件
How is it possible to set more window.onload events?
我有三个函数,我想在加载页面时调用它们。我试过这个:
window.onload = [function f1(){...}, function f2(){...}, function f3(){...}];
不幸的是,这不起作用。我不知道我应该如何管理它。
不能设置多个事件处理程序,它不受支持。 如果你需要执行多个函数,那么只需依次调用它们:
function f1() { ... }
function f2() { ... }
function f3() { ... }
window.onload = function() {
f1();
f2();
f3();
}
大多数 JavaScript 库都为您提供了向事件处理程序添加多个函数调用的方法 - 并将为您执行链接。 例如,使用 jQuery,您可以执行以下操作:
$(window).load(function() { ... });
$(window).load(function() { ... });
$(window).load(function() { ... });
这不会用新的调用覆盖以前的调用,但会将所有三个调用设置为从onload
事件调用。
更新:处理它的另一种方法是在window
对象上使用addEventListener
。
function f1() { ... }
function f2() { ... }
function f3() { ... }
window.addEventListener("load", f1);
window.addEventListener("load", f2);
window.addEventListener("load", f3);
甚至
window.addEventListener("load", function() { ... });
window.addEventListener("load", function() { ... });
window.addEventListener("load", function() { ... });
这两个代码片段等效于第一个 - 并且彼此。
在混淆代码类别下,这里有一个可以考虑为大脑锻炼的选项:
window.onload = function() {
return this.forEach(Function.prototype.call, Function.prototype.call);
}.bind([function f1(){...}, function f2(){...}, function f3(){...}]);
它将适用于实现 Array.forEach()
和 Function.prototype.bind()
.
只需将所有函数包装在一个匿名函数中
window.onload = function(){
f1();
f2();
f3();
}
您可以在从一个函数调用函数之前定义函数:
window.onload = function () {
f1();
f2();
f3();
}
使用 addEventListener()
,您可以为 onload
定义多个侦听器。侦听器按定义顺序执行。
使用函数动态添加它们:
function addWindowOnload(next) {
var prev = window.onload;
window.onload = function() {
if (prev) prev();
next();
};
}
相关文章:
- window.onload没有'无法在Android WebView中工作
- 你能停止window.onload函数吗
- window.onload适用于aspx页面,但不适用于普通html
- 使用window.onload超过1次
- 关于javascript中的window.onload
- 未捕获的类型错误:无法设置属性'onclick'为null.已尝试window.onload
- 如何只使用一次window.onload函数
- window.onload 不适用于计数器页面
- Window.onload 未被调用 [Ruby on Rails] [Vanilla Javascript]
- window.onload和.click()在ie9中不起作用
- JavaScript window.onload versus body.onload
- 将Window Onload函数转换为非阻塞
- 为什么window.onload函数未定义
- 在window.onload之前/之后创建对象之间的区别
- JavaScript window.onload
- 为什么getElementsByClassName可以在没有“;window.onload”;
- window.onload在窗口已打开时未启动
- window.onload未在IE中启动
- “;预加载“;<音频>影响window.onload事件时间
- 何时使用“;window.onload”;