Javascript - 多个自定义事件监听器

时间:2017-01-04 12:47:32

标签: javascript

当事件被触发时,我需要从我网站上的3个不同位置执行代码。我已经添加了3个监听器,但由于某种原因,只有第一个监听器被调用。

这是我目前正在测试的代码:JSFiddle

window.addEventListener('tompina_event', function (e) {
    document.write("triggered 1");
});

window.addEventListener('tompina_event', function (e) {
    document.write("triggered 2");
});

window.addEventListener('tompina_event', function (e) {
    document.write("triggered 3");
});



var evt = new CustomEvent('tompina_event');
window.dispatchEvent(evt);

结果:

triggered 1

这是我希望的结果:

triggered 1triggered 2triggered 3

2 个答案:

答案 0 :(得分:2)

它有效,但document.write会破坏原始页面,从而破坏其他代码的执行。

请重写,以便以alert("triggered 1")console.log("triggered 1")之类的其他方式设置结果。

答案 1 :(得分:1)

问题在于document.write()。每个调用都会覆盖前一个调用的字符串,看起来只有一个调用。更改为console.log()或document.body.innerHTML + =""你会看到他们全都开火了。

write()方法主要用于测试:如果在HTML文档完全加载后使用它,它将删除所有现有的HTML。