2017-05-29 45 views
2

我的内容脚本和我的测试回显扩展的后台脚本之间的通信基于browser.runtime.connect。我在github上发布了我的代码和扩展包。Microsoft Edge中的内容脚本和后台脚本之间的通信

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

当我将它添加到边缘时,此扩展可以正常使用加载扩展按钮,如Microsoft Edge文档中所述。因此,如果您打开测试页加载的扩展名,您应该看到“HELLO FROM BACKGROUND SCRIPT”文本中的收到消息字段

但有如果本扩展从软件包安装 所以,你可以尝试一个奇怪的问题...延长不工作,直到我打开这个扩展的背景页面并重新加载测试页 ...重现:

  1. 从包装
  2. 打开测试页安装这个扩展。后台脚本无法正常工作(收到的消息字段为空),并且此脚本未收到已发送的消息...页面重新加载或关闭\扩展名不起作用。
  3. 打开后台页面这个扩展。那么这个页面可能会被关闭。
  4. 刷新测试页
  5. 扩展开始正常工作...

:本次测试扩展是基于MDN(不好意思公布runtime.connect例子,但我可以不要插入两个以上的链接...)。

你能帮我解决这个问题吗?也许我错过了文档中的某些东西...

+0

我也曾经遇到这个问题,对于appx包,后台页面不会加载,直到您手动检查它。鼓励在这里提出一个错误https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/ –

+0

@HaibaraAi感谢您的评论。现在我知道其他开发者也有同样的问题。我四天前提出了这个错误https://developer.microsoft。com/en-us/microsoft-edge/platform/issues/12156180 /但我仍然没有收到回复......看来这个过程并不快。你能将这个错误标记为可重现的吗?我的意思是,你可以推**我吗?也许这将有助于加快这个错误报告处理... –

+0

感谢提高错误!我upvoted:) –

回答

1

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

+0

谢谢你的答案!我已将持久性属性值设置为true,因此即使从包中安装扩展,扩展也能正常工作。但是,仍然...加载非持久背景页面的正确方法是什么?例如在谷歌浏览器上,这个页面将为每个新版本的扩展程序加载一次。之后,它只会被加载以提供您已注册的事件([文档](https://developer.chrome.com/extensions/event_pages))。 –

相关问题