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

Ale*_*sky 22 google-chrome-extension

有没有办法检测我是否正在运行从我的.crx文件安装的扩展程序,或者通过"加载解压扩展..."按钮加载扩展名?

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

Kon*_*nel 29

如果"从我的.crx文件安装"是指从Chrome网上应用店安装,您只需检查属性manifest.json值的扩展名即可update_url.上传您的扩展程序后,CWS会添加它.

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

  • Chrome之后引入了`chrome.management.getSelf`,它更适合此目的. (5认同)
  • 尽管从技术上来说这是一个更好的解决方案,但我不喜欢它,因为`chrome.management.getSelf`返回了一个承诺,这很烦人。检查`chrome.runtime.getManifest()。update_url`更加容易。 (2认同)

Dmi*_*dov 25

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

function isDevMode() {
    return !('update_url' in chrome.runtime.getManifest());
}
Run Code Online (Sandbox Code Playgroud)

用于Kuoll远程Web调试器

  • 更简单的方法是使用[chrome.runtime.getManifest()](https://developer.chrome.com/extensions/runtime#method-getManifest). (2认同)

Den*_*nis 6

当扩展在其清单中包含该字段时,它正在开发人员模式下运行(即解压) 。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');
Run Code Online (Sandbox Code Playgroud)