您可以打开多个使用chrome.runtime.onMessage.addListener的Chrome扩展程序页面吗?

时间:2019-03-14 13:02:47

标签: google-chrome-extension firefox-addon

我遇到一个奇怪的情况,一个内容页面似乎阻碍了其他所有内容的后台脚本通信。

这很奇怪,因为我可以看到调用通过DevTools中的后台脚本进行,但是当我打开主要内容页面的副本 chrome-extensions://xxx/index.html >期望chrome.runtime.sendMessage产生结果的所有其他页面都没有得到。

我不确定是否与此处的警告有关:

  

注意:如果多个页面正在监听onMessage事件,则仅   首先为特定事件调用sendResponse()将成功   发送响应。该事件的所有其他响应将是   忽略。

说实话,我觉得该案文有点含糊。我认为这意味着在处理程序中,sendResponse()只能被调用一次,但这不是这里发生的事情,因为内容sendMessage()是一个单独的页面/进程。

然后,它再次声明“多页”,是否意味着一次只能使用一页browser.runtime.onMessage.addListener()

我很困惑。

如果我关闭任何主要内容页面(构建最复杂的内容页面),并打开一些更简单的内容页面(在加载时仅对后台脚本进行一次调用),则更简单的内容页面(不包含)听众)都可以。

当我打开主内容页面(使用监听器)时,较简单的页面将不再起作用,如果我打开两个主内容页面,则两个页面(使用监听器)都将无效。< / p>

我的消息发送包装在一个帮助程序库中,该程序库用于序列化和处理传递的消息中的错误,此外,我正在使用Web Extensions Polyfill为我提供更好的基于Promise的API,但该方法一直在使用过去两个月里我扔给它的所有东西,这个应用程序都很复杂。

我正在使用一次性发送消息格式:

browser.runtime.sendMessage(id || null, payload).then( ... )

下一步是查看长期连接。

我确定这一定是其他人遇到的问题。

有人有类似的东西吗?

干杯, 戴夫

0 个答案:

没有答案