我试图在一个元素后面发射事件。它工作得很好,只有一个故障:如果事件没有绑定到目标元素,它会抛出错误。
我有一个覆盖整个页面的元素。当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
如果事件被绑定,有没有办法检测鬼?请不要图书馆。
答案 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");
});
还测试了如果跨度上没有事件监听器则不会抛出。