Microsoft Edge中内容脚本和后台脚本之间的通信

时间:2017-05-29 03:46:22

标签: javascript microsoft-edge microsoft-edge-extension

我的内容脚本和测试回显扩展程序的后台脚本之间存在基于 browser.runtime.connect 的通信问题。我已在github上发布了我的代码和扩展程序包。

此扩展程序的简短说明。您可以在this GitHub test page上运行扩展程序。内容脚本使用 browser.runtime.connect 连接到后台脚本,并在单击“提交”按钮时通过 browser.runtime.Port 对象发送消息。后台脚本接收消息,将其转换为大写并发回。然后内容脚本接收修改后的消息并将其显示在页面上(收到消息字段)。

当我使用加载扩展程序按钮将其添加到Edge时,此扩展程序正常工作,如Microsoft Edge文档中所述。因此,如果您使用加载的扩展程序打开测试页,您应该会在收到的消息字段中看到“HELLO FROM BACKGROUND SCRIPT”文本。

但是如果从包中安装此扩展程序有一个奇怪的问题...在我打开此扩展程序的后台页面并重新加载测试页之前,扩展程序无效STRONG> ... 所以你可以尝试重现它:

  1. 从包
  2. 安装此扩展程序
  3. 打开测试页。后台脚本无法正常工作(收到的消息字段为空)并且此脚本未收到已发送的消息...页面重新加载或关闭扩展名\无法帮助。
  4. 打开此扩展程序的背景页。然后此页面可能会关闭。
  5. 重新加载测试页
  6. 扩展开始正常工作......
  7. 注意:此测试扩展基于在MDN上发布的 runtime.connect 示例(抱歉,但我无法插入两个以上的链接......)。

    你能帮我解决这个问题吗?也许我错过了文档中的内容......

1 个答案:

答案 0 :(得分:1)

这是设计使然,因为您的扩展清单指定持久标志为false。在Microsoft Edge上,后台脚本的默认行为是非持久性的。