我在Chrome扩展程序内容脚本中使用window.postMessage:
function() {
window.addEventListener("message", function(event) {
console.log(event);
}, false);
window.postMessage({ type: \"FROM_PAGE\"}, "*");}
异常行为是我第一次调用此函数,控制台打印事件一次;我第二次打电话,控制台打印两次;第三次,三次 我的代码出了什么问题?
答案 0 :(得分:2)
这是因为您在调用该函数时添加新 EventListener 每次时间。
因此,您添加的每个EventListener都会收到postmessage
发布的消息,然后
console.log(event)
所以你第一次给你打电话。您EventListeners
的功能仅执行一次,因为只有 1 EventListener
附加到调用console.log
的DOM
第二次有两个EventListeners
执行console.log
等等......
您应该附上EventListener
window.addEventListener("message", function(event) {
...
}
在你的功能之外。
并且只做window.postMessage({ type: \"FROM_PAGE\"}, "*");
部分在函数内部