有没有办法检测我运行的是从我的.crx文件安装的扩展,还是通过"加载解压缩的扩展..."加载扩展程序加载的扩展按钮?
我知道在这种情况下的ID差异,但我不想依赖代码中的硬编码字符串。
如果"从我的.crx
文件安装"是指从Chrome网上应用店安装,您只需检查扩展manifest.json
update_url
属性的值即可。CWS 会在您上传扩展时添加它。
如果您有自承载.crx
文件,请使用chrome.management.getSelf()
获取扩展信息,并检查返回的 ExtensionInfo 对象的installType
。如果它说"development"
则表示扩展是在开发人员模式下解压缩的。 "normal"
表示它是从.crx
文件安装的。
下面是如何执行此操作的代码示例:
function isDevMode() {
return !('update_url' in chrome.runtime.getManifest());
}
或
const isProdMode = 'update_url' in chrome.runtime.getManifest()
清单中不包含update_url
字段时,该扩展在开发人员模式下运行(即解压缩)。
这是因为解压缩扩展的 JSON 清单文件不应包含update_url
字段。通过 Chrome 开发者信息中心发布内容时,系统会自动添加此字段。
例如,仅在开发过程中出现的调试日志。
const IS_DEV_MODE = !('update_url' in chrome.runtime.getManifest());
function debugLog(str) {
if (IS_DEV_MODE) console.log(str);
}
debugLog('This only appears in developer mode');