防止window.onload被覆盖
Prevent window.onload being overridden
如何克服被覆盖的事件处理程序?我有一个脚本说a.js
window.onload = function () {
//Handler in a.js
}
另一个脚本说b.js
window.onload = function () {
//Handler in b.js
}
其中,
a.js是我建立的一种第三方库
b.js是一个使用我的脚本的出版商[我不能在这里做任何更改]
b.js中的onload处理程序会覆盖a.js的处理程序吗?
如果是,如何防止这种情况发生?
在.js中构建一个包含所有事件处理程序的队列并在事件上取消它们是否有帮助?
但是,在加载b.js之前,a.js会提前知道事件的所有事件处理程序吗?
思考和参考会有所帮助。
您应该使用addEventListener()为同一事件提供不同的处理程序
window.addEventListener("load", yourfunction, false);
在下层IE版本中使用element.addEventListener
或window.attachEvent
。
样本addEvent
方法:
function addEvent(node, type, listener) {
if (node.addEventListener) {
node.addEventListener(type, listener, false);
return true;
} else if (node.attachEvent) {
node['e' + type + listener] = listener;
node[type + listener] = function() {
node['e' + type + listener](window.event);
}
node.attachEvent('on' + type, node[type + listener]);
return true;
}
return false;
};
注意-大多数(如果不是全部的话)现代JavaScript库(如jQuery
和MooTools
)都有自己的实现。我建议利用他们的API,因为它们抽象出不同的浏览器实现,并经过了彻底的测试
是的,第二条语句将覆盖第一条语句。因为您使用的是传统的注册模型,所以任何给定的事件和对象都只允许使用一个事件句柄。功能分配不是累积的。但你可以:
window.onload = function () {handlerinb(); handlerina()}
相关文章:
- 在循环中分配json值时,值被覆盖
- 谷歌地图固定位置覆盖
- 只覆盖箭头键滚动事件
- JQuery覆盖不更改单选选项
- 如何覆盖锚点元素's href目标,并在我点击转到目标javascript时删除其他错误
- window.onload没有'无法在Android WebView中工作
- JavaScript-动态SVG-onload属性-未触发事件
- 将添加一个相同类型的事件附加或覆盖以前添加的具有相同名称的事件
- 传单中如何在更改基层时启用/禁用覆盖层
- 点击(右键点击)使用传单地图库获取图像覆盖的像素坐标
- HTML/CSS-用于拖放的全页面覆盖
- 让javascript知道epub3电子书中何时播放媒体覆盖
- 在phonegap中为android调用onload函数的最佳方式
- 覆盖函数中的函数
- 无法覆盖CSS伪元素:before
- image.onload事件和浏览器缓存
- 将函数从onclick修改为onload
- 如何覆盖原型中的事件侦听器
- 防止window.onload被覆盖
- JavaScript -覆盖html元素的.onload原型