Tam*_*mil 17 javascript javascript-events
如何克服事件处理程序被覆盖?我有一个剧本说a.js
window.onload = function () {
//Handler in a.js
}
Run Code Online (Sandbox Code Playgroud)
另一个剧本说b.js
window.onload = function () {
//Handler in b.js
}
Run Code Online (Sandbox Code Playgroud)
哪里,
a.js是我建立的第三方图书馆
b.js是使用我的脚本的发布者[我不能在这里做任何更改]
b.js中的onload处理程序是否会覆盖a.js的处理程序?
如果是,如何防止这种情况发生?
是否会在a.js中构建所有事件处理程序的队列,并在事件帮助中将它们解除?
但是a.js是否会知道事件的所有事件处理程序,直到事先b.js被加载?
思考和参考将有所帮助
Nic*_*tti 20
你应该使用addEventListener()来为同一个事件提供各种处理程序
window.addEventListener("load", yourfunction, false);
Run Code Online (Sandbox Code Playgroud)
使用element.addEventListener或window.attachEvent在低级IE版本中.
样品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;
};
Run Code Online (Sandbox Code Playgroud)
注 -大多数情况下,如果不是全部,现代JavaScript库一样jQuery,并MooTools有自己的实现.我建议利用他们的API - 因为他们抽象出不同的浏览器实现并且已经过全面测试.
| 归档时间: |
|
| 查看次数: |
7612 次 |
| 最近记录: |