在触发前检测事件的存在 - JavaScript

时间:2012-11-30 16:57:18

标签: javascript events javascript-events

我试图在一个元素后面发射事件。它工作得很好,只有一个故障:如果事件没有绑定到目标元素,它会抛出错误。

我有一个覆盖整个页面的元素。当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

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

1 个答案:

答案 0 :(得分: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"); 
});​

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