检查Chrome扩展程序是否以解压缩模式安装



有没有办法检测我运行的是从我的.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');

最新更新