0

我在 Chrome 扩展内容脚本中使用 window.postMessage:

function() {
   window.addEventListener("message", function(event) {
        console.log(event);
   }, false);


   window.postMessage({ type: \"FROM_PAGE\"}, "*");}

异常行为是我第一次调用这个函数,控制台打印一次事件;我第二次打电话,控制台打印两次;第三次,三次。
我的代码有什么问题?

4

1 回答 1

2

这是因为您每次调用该函数时都会添加一个的EventListener 。

因此,您添加的每个 EventListener 都会收到由发布的消息postmessage,然后执行

console.log(event)

所以第一次调用你的函数。你EventListeners的功能,只执行一次,因为只有1 EventListener附加到调用的 DOMconsole.log

第二次有两个EventListeners执行console.log ,依此类推......

你应该附上你EventListener

window.addEventListener("message", function(event) {
...
}

在你的职能之外。
并且只做window.postMessage({ type: \"FROM_PAGE\"}, "*"); 函数内部的部分

于 2013-03-21T08:42:28.993 回答