当事件被触发时,我需要从我网站上的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
答案 0 :(得分:2)
它有效,但document.write
会破坏原始页面,从而破坏其他代码的执行。
请重写,以便以alert("triggered 1")
或console.log("triggered 1")
之类的其他方式设置结果。
答案 1 :(得分:1)
问题在于document.write()。每个调用都会覆盖前一个调用的字符串,看起来只有一个调用。更改为console.log()或document.body.innerHTML + =""你会看到他们全都开火了。
write()方法主要用于测试:如果在HTML文档完全加载后使用它,它将删除所有现有的HTML。