如何知道是否从商店下载了 chrome 扩展?

How to know whether a chrome extension is downloaded from store?

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

该扩展依赖于可通过网络访问的 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 页面)?

如果方案能兼容所有浏览器就完美了!

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

我建议阅读更多有关 packaging chrome extensions here.

的内容

具体来说this part.

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

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

ExtensionInstallType

扩展程序是如何安装的。其中之一:

  • admin:根据管理策略安装了扩展程序
  • 开发:扩展已在开发者模式下解压加载
  • 正常:扩展通过 .crx 文件正常安装
  • sideload: 扩展被机器上的其他软件安装
  • other: 扩展是通过其他方式安装的 枚举 "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";
    }
});