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

Google chrome extension 针对Google Chrome和Edge Chrome时,我应该何时启动本机消息主机?,google-chrome-extension,microsoft-edge-extension,Google Chrome Extension,Microsoft Edge Extension,我有一个使用本机主机的Google Chrome扩展。这仅在windows设备上使用,扩展的注册表设置随本机主机exe的安装一起添加。当前,端口(chrome.runtime.connectNative)或本机主机在加载extensions后台脚本时启动。这目前意味着无论何时运行Google Chrome,本机主机都会运行 扩展仅用于1个网站“www.example.com”,因此内容脚本仅在加载此网站的选项卡时运行。这意味着本机主机仅在加载此网站的选项卡时才需要,而不是始终需要 我现在还想创建

我有一个使用本机主机的Google Chrome扩展。这仅在windows设备上使用,扩展的注册表设置随本机主机exe的安装一起添加。当前,端口(chrome.runtime.connectNative)或本机主机在加载extensions后台脚本时启动。这目前意味着无论何时运行Google Chrome,本机主机都会运行

扩展仅用于1个网站“www.example.com”,因此内容脚本仅在加载此网站的选项卡时运行。这意味着本机主机仅在加载此网站的选项卡时才需要,而不是始终需要

我现在还想创建一个Edge Chrome扩展,并为用户提供使用Edge或Chrome的选项。如上所述,这两个扩展都是“已安装”的,这意味着在安装本机主机时添加了注册表项。这意味着两种浏览器都有扩展

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

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

  • 当用户选择使用Edge或Chromium时,此时我是否应该对注册表进行更改?这里的问题是,用户当然可以独立于我的应用程序安装扩展
  • 保持现状有什么问题吗。换句话说,如果Edge和Chromium正在运行,则有两个不同的本机主机正在运行,而我的应用程序只是根据用户的选择选择与哪个本机主机通信。这里的问题是,您可以在任务管理器中看到本机主机进程正在运行,因此它将针对用户尚未选择的浏览器运行,这对于某些用户可能不合适
  • 我考虑过扩展是否应该启动本机主机。这里的问题是如何打开此标志。没有本机主机,我不知道如何与扩展交互
  • 可能有更多的选择,所以很高兴听到他们以及

    对注册表的更改

    添加
    chrome-extension://id/
    主机清单中的第二个扩展名id为
    允许的\u来源
    ,如中所示

    有两个不同的本机主机正在运行

    每个主机都由其各自的扩展启动,并且它只能与该父扩展通信,没有混淆

    用于知道是否应启动本机主机的标志。这里的问题是如何打开此标志。没有本机主机,我不知道如何与扩展交互

    这取决于主机和扩展做什么。可能您不需要一直运行主机,也可能只有在加载带有匹配URL的选项卡时才能启动主机。也许你可以使用新的实验机制

    对注册表的更改

    添加
    chrome-extension://id/
    主机清单中的第二个扩展名id为
    允许的\u来源
    ,如中所示

    有两个不同的本机主机正在运行

    每个主机都由其各自的扩展启动,并且它只能与该父扩展通信,没有混淆

    用于知道是否应启动本机主机的标志。这里的问题是如何打开此标志。没有本机主机,我不知道如何与扩展交互


    这取决于主机和扩展做什么。可能您不需要一直运行主机,也可能只有在加载带有匹配URL的选项卡时才能启动主机。也许你可以使用新的实验机制。

    我同意@wOxxOm的建议。如果您还有任何问题,请告诉我们。我同意@wOxxOm给出的建议。如果您还有任何问题,请告诉我们。谢谢您的回答。所以你建议两个浏览器都使用一个主机文件,对吗?这意味着主机文件必须知道它为哪个浏览器工作。引用文档“本机消息传递主机的第一个参数是调用方的来源”,这样您就可以使用它了。或者您的扩展可以在连接userAgent字符串后发送消息,例如。是的,我明白了。我这里有一个关于那些arg的问题。您也对此发表了评论。如果您愿意,我可以开始一个新问题,但我只是在Edge中加载了未打包的扩展,它给了我与Chrome中相同的ID,这意味着主机(至少对于测试而言)无法区分。临时扩展ID是完整路径的散列。在网上商店里会有所不同。通过将目录的符号链接(或NTFS连接)设置为不同的名称并将其加载到其他浏览器中,可以强制使用不同的id。谢谢您的回答。所以你建议两个浏览器都使用一个主机文件,对吗?这意味着主机文件必须知道它为哪个浏览器工作。引用文档“本机消息传递主机的第一个参数是调用方的来源”,这样您就可以使用它了。或者您的扩展可以在连接userAgent字符串后发送消息,例如。是的,我明白了。我这里有一个关于那些arg的问题。您也对此发表了评论。如果您愿意,我可以开始一个新问题,但我只是在Edge中加载了未打包的扩展,它给了我与Chrome中相同的ID,这意味着主机(至少对于测试而言)无法区分。临时扩展ID是完整路径的散列。在网上商店里会有所不同。通过将目录的符号链接(或NTFS连接)设置为不同的名称并将其加载到其他浏览器中,可以强制使用不同的id。