当同时针对 Google Chrome 和 Edge Chromium 时,我应该何时启动本机消息主机?

When should I start a native message host when targeting both Google Chrome and Edge Chromium?

我有一个使用本机主机的 Google Chrome 扩展。这仅用于 windows 框,并且扩展的注册表设置与本机主机 exe 的安装一起添加。当前,加载扩展后台脚本时启动端口 (chrome.runtime.connectNative) 或本机主机。这目前意味着当 Google Chrome 是 运行ning 时,本机主机 运行s。

该扩展仅用于 1 个网站 "www.example.com",因此当加载包含该网站的选项卡时,内容脚本仅 运行。这意味着只有在加载带有此网站的选项卡时才需要本机主机,而不是一直都需要。

我现在还想创建一个 Edge Chromium 扩展,让用户可以选择使用 Edge 还是 Chrome。正如我在上面指出的那样,这两个扩展都是 "installed" ,这意味着在安装本机主机时添加了注册表项。这意味着扩展将适用于两种浏览器。

因此,我的主要问题是应何时以及如何启动本机主机。

从这个主要问题我有一大堆想法或问题;

  1. 当用户选择使用 Edge 或 Chromium 时,我是否应该在此时对注册表进行更改?这里的问题是用户当然可以独立于我的应用程序安装扩展。
  2. 保持原样有问题吗?换句话说,如果 Edge 和 Chromium 运行ning 那么有 2 个不同的本地主机 运行ning 并且我的应用程序只是根据用户的选择选择与哪个本地主机进行通信。这里的问题是您可以在任务管理器中看到本机主机进程 运行ning,因此对于用户未选择的浏览器,它会 运行ning,这对某些用户来说可能不合适。
  3. 我想扩展有一个标志来知道它是否应该启动本机主机。这里的问题是我怎样才能打开这个标志。没有本机主机,我不知道如何与扩展交互。

可能还有更多选择,也很高兴听到它们。

changes to the registry

chrome-extension://id/ 与您的第二个扩展程序的 ID 添加到主机清单中的 allowed_origins,如 documentation.

中所示

there are 2 different native hosts running

每个主机都由其各自的扩展启动,它只能与父扩展通信,不会混淆。

a flag to know if it should start the native host. Problem here is how could I turn this flag on. Without the native host I am unaware of a way to interact with the extension.

这取决于主机和分机做什么。也许您不需要一直 运行 主机,或者您可以仅在加载具有匹配 URL 的选项卡时启动它。也许您可以使用新的实验性 onConnectNative 机制。