26

有没有办法检测我是否正在运行从我的 .crx 文件安装的扩展程序,或者扩展程序是通过“加载未打包的扩展程序...”按钮加载的?

我知道这种情况下的 ID 差异,但我不想依赖代码中的硬编码字符串。

4

3 回答 3

38

如果“从我的.crx文件安装”是指从 Chrome 网上应用店安装,您可以简单地检查扩展名manifest.jsonupdate_url属性值。CWS 在您上传扩展程序时添加它。

如果您有自托管.crx文件,请使用chrome.management.getSelf()并检查installType返回的ExtensionInfo对象获取您的扩展信息。如果它说"development"这意味着扩展是在开发人员模式下解包加载的。"normal"表示它是从.crx文件安装的。

于 2012-10-11T06:30:56.733 回答
25

这是如何执行此操作的代码示例:

function isDevMode() {
    return !('update_url' in chrome.runtime.getManifest());
}
于 2013-11-26T21:07:38.517 回答
4

当一个扩展在其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');
于 2017-09-17T21:58:51.243 回答