Raz*_*man 56 javascript events dom webkit
我正在寻找一种简单而抽象的方法来克隆或重新调度DOM事件.我对克隆DOM节点不感兴趣.
我已经尝试了一下,阅读了DOM Events规范,但我没有找到明确的答案.
理想情况下,我正在寻找一些直截了当的东西:
handler = function(e){
document.getElementById("decoy").dispatchEvent(e)
}
document.getElementById("source").addEventListener("click", handler)
Run Code Online (Sandbox Code Playgroud)
当然,这个代码示例不起作用.有一个DOM例外,说明事件当前正在调度 - 显然.
我想避免手动创建新事件document.createEvent(),初始化它们并调度它们.
这个用例有一个简单的解决方案吗?
Ale*_*xis 108
我知道,问题是陈旧的,OP希望避免创建/初始化方法,但是有一种相对简单的方法来复制事件:
new_event = new MouseEvent(old_event.type, old_event)
Run Code Online (Sandbox Code Playgroud)
如果您想要的不仅仅是鼠标事件,您可以这样做:
new_event = new old_event.constructor(old_event.type, old_event)
Run Code Online (Sandbox Code Playgroud)
在原始背景下:
handler = function(e) {
new_e = new e.constructor(e.type, e);
document.getElementById("decoy").dispatchEvent(new_e);
}
document.getElementById("source").addEventListener("click", handler);
Run Code Online (Sandbox Code Playgroud)
(对于jQuery用户:您可能需要使用e.originalEvent.constructor而不是e.constructor)
| 归档时间: |
|
| 查看次数: |
16323 次 |
| 最近记录: |