Roy*_*ang 3 javascript javascript-events
假设我使用addEventListener或attachEvent(取决于浏览器)向对象添加事件; 是否有可能以后以编程方式调用这些事件?
使用如下对象添加/删除事件处理程序:
var Event = {
add: function(obj,type,fn) {
if (obj.attachEvent) {
obj.attachEvent('on'+type,fn);
} else {
obj.addEventListener(type,fn,false);
}
},
remove: function(obj,type,fn) {
if (obj.detachEvent) {
obj.detachEvent('on'+type,fn);
} else {
obj.removeEventListener(type,fn,false);
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者我是否需要存储每个处理程序的副本,只需添加一个Event.invoke(...)函数?
编辑:此外,jQuery不是一个选项:D
Nic*_*itz 11
像往常一样,你必须为Internet Explorer做一种方式,并为其他一切做正确的方法;-)
对于IE:
document.getElementById("thing_with_mouseover_handler").fireEvent("onmouseover");
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅MSDN库.
对于真正的浏览器:
var event = document.createEvent("MouseEvent");
event.initMouseEvent("mouseover", true, true, window);
document.getElementById("thing_with_mouseover_handler").dispatchEvent(event);
Run Code Online (Sandbox Code Playgroud)
请注意,虽然第二种基于标准的方法看起来更加冗长,但它也更加灵活:查看文档,从https://developer.mozilla.org/en/DOM/上的Mozilla DOM事件参考开始事件
虽然只与您尝试做的事情有关(它与自定义事件有关,而不是正常事件),但Dean Edwards在http://dean.edwards.name/weblog/2009/03/callbacks-vs上有一些示例代码.- 事件/可能值得一看.
| 归档时间: |
|
| 查看次数: |
3023 次 |
| 最近记录: |