1

我开发了一个与 Firefox/Edge/Opera 兼容的 chrome 扩展。

该扩展依赖于可通过 Web 访问的 REST API。在 Web 开发期间,我更喜欢指向一个开发端点,它不会影响生产租户,只会影响开发实例和数据库。

我的问题很简单,我想做类似于这个伪代码:

if (extension.downloaded_from_store == true)
    endpoint = "https://api-dev.example.com"
else
    // The extension has been installed from a local directory
    endpoint = "https://api-prod.example.com"

你知道我怎么能做这样的事情(最好是从 background.js 页面)?

如果解决方案可以兼容所有浏览器,那就完美了!

4

2 回答 2

3

我在管理模块的 chrome 文档中找到了答案:

链接:https ://developer.chrome.com/extensions/management#type-ExtensionInstallType

扩展安装类型

扩展是如何安装的。之一:

  • admin:由于管理策略而安装了扩展程序
  • development:扩展在开发者模式下被解压加载
  • normal:扩展是通过 .crx 文件正常安装的
  • sideload:扩展是由机器上的其他软件安装的
  • 其他:扩展是通过其他方式安装的枚举“admin”、“development”、“normal”、“sideload”或“other”

这允许我执行以下操作:

chrome.management.get(chrome.runtime.id, function(app_info){
    if (app_info.installType == "development"){
        endpoint = "https://api-dev.example.com";
    }
    else {
        endpoint = "https://api-prod.example.com";
    }
});
于 2017-09-11T21:01:03.990 回答
2

商店中的大多数 google chrome 扩展程序都有一个永久的扩展程序 ID。如果您将扩展打包,以便每次更新都使用相同的扩展 ID,那么您可以简单地对该 ID 进行硬编码,并首先在其中检查它。

我建议在这里阅读更多关于打包 chrome 扩展的信息。

具体这部分。

于 2017-09-11T20:43:09.933 回答