有没有办法检测我是否正在运行从我的 .crx 文件安装的扩展程序,或者扩展程序是通过“加载未打包的扩展程序...”按钮加载的?
我知道这种情况下的 ID 差异,但我不想依赖代码中的硬编码字符串。
有没有办法检测我是否正在运行从我的 .crx 文件安装的扩展程序,或者扩展程序是通过“加载未打包的扩展程序...”按钮加载的?
我知道这种情况下的 ID 差异,但我不想依赖代码中的硬编码字符串。
如果“从我的.crx
文件安装”是指从 Chrome 网上应用店安装,您可以简单地检查扩展名manifest.json
的update_url
属性值。CWS 在您上传扩展程序时添加它。
如果您有自托管.crx
文件,请使用chrome.management.getSelf()
并检查installType
返回的ExtensionInfo对象获取您的扩展信息。如果它说"development"
这意味着扩展是在开发人员模式下解包加载的。"normal"
表示它是从.crx
文件安装的。
这是如何执行此操作的代码示例:
function isDevMode() {
return !('update_url' in chrome.runtime.getManifest());
}
当一个扩展在其manifest中不包含该update_url
字段时,它正在开发者模式下运行(即解包)。
这是因为解压后扩展的 JSON 清单文件不应包含该update_url
字段。通过 Chrome Developer Dashboard 发布时会自动添加此字段。
例如,仅在开发期间出现的调试日志。
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');