i开发了一个与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"
您是否知道我怎么能做这样的事情(最好是从背景。JS页面)?
如果解决方案可以与所有浏览器兼容,那将是完美的!
商店上的大多数Google Chrome扩展名都具有永久扩展ID。如果您打包了扩展程序,以便在每个更新中使用相同的扩展ID,则可以简单地简单地进行硬码ID,然后首先在该IF中检查。
我建议在此处阅读有关包装铬扩展的更多信息。
特别是此部分。
我在管理模块中的Chrome文档中找到了答案:
链接:https://developer.chrome.com/extensions/management#type-extensioninstalltype
ExtensionInstallType
如何安装扩展名。之一:
- 管理员:由于行政策略,安装了扩展名
- 开发:将扩展程序装载在开发人员模式下
- 正常:扩展名是通过.crx文件正常安装的
- sideload:扩展名是由机器上的其他软件安装的
- 其他:扩展程序是通过其他方式安装的枚举" admin","开发","正常"," sideload"或"其他"
这使我可以做以下操作:
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";
}
});