0

我正在尝试在元素后面触发事件。它工作得很好,有一个障碍:如果事件未绑定到目标元素,它会引发错误。

我有一个覆盖整个页面的元素。发生时event,元素会消失,javascript 会event在其后面的元素上模拟它。相关代码:

e.target.parentNode.removeChild(e.target);  
var ghost = document.elementFromPoint(e.pageX, e.pageY);
ghost.dispatchEvent(e.type);

效果很好,除了如果ghost没有那个特定的事件绑定,它会抛出一个丑陋的UNSPECIFIED_EVENT_TYPE_ERR: DOM Events Exception 0

如果事件被绑定,有没有办法检测幽灵?请不要图书馆。

4

1 回答 1

1

.dispatchEvent接受一个 Event 对象,而不是一个字符串。

http://jsfiddle.net/xEmcy/1/

document.querySelector("div").addEventListener("click", function(e) {
    var evt = document.createEvent('Event');
    evt.initEvent(e.type, true, true);
    document.querySelector("span").dispatchEvent(evt);
}, false);


document.querySelector("span").addEventListener("click", function(e){
   alert("via trigger"); 
});​

还测试了如果跨度上没有事件侦听器,它不会抛出。

于 2012-11-30T17:04:30.870 回答