有没有办法检测我是否正在运行从我的.crx文件安装的扩展程序,或者是通过“加载解压扩展程序...”按钮加载扩展程序?
我知道在这种情况下ID差异,但我不想依赖代码中的硬编码字符串。
答案 0 :(得分:25)
如果“从我的.crx
文件中安装”意味着从Chrome网上应用店安装,则只需检查扩展程序manifest.json
是否有update_url
属性的值。当您上传扩展程序时,CWS会添加它。
如果您有自托管的.crx
文件,请使用chrome.management.getSelf()
获取您的扩展程序信息,然后检查返回的ExtensionInfo对象的installType
。如果它显示"development"
,则表示扩展程序已在开发人员模式下解压缩。 "normal"
表示它是从.crx
文件安装的。
答案 1 :(得分:24)
以下是如何执行此操作的代码示例:
function isDevMode() {
return !('update_url' in chrome.runtime.getManifest());
}
中使用
答案 2 :(得分:3)
扩展程序在开发人员模式下运行(即已解压缩),当 包含manifest中的update_url
字段时。
这是有效的,因为解压缩的扩展程序的JSON清单文件不应包含update_url
字段。 publishing via the 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');