Проверьте, установлено ли расширение Chrome в распакованном режиме

Есть ли способ определить, запущен ли я расширение, которое было установлено из моего .crx файла, или расширение было загружено, как через кнопку "Загрузить распакованные расширения..."?

Я знаю о различиях идентификаторов в этом случае, но я не хочу полагаться на жестко закодированные строки в коде.

Ответы

Ответ 1

Если "из моего .crx файла", установленного в Chrome Web Store, вы можете просто проверить расширение manifest.json на значение атрибута update_url. CWS добавляет его при загрузке вашего расширения.

Если у вас есть собственный файл .crx, получите информацию о расширении с помощью chrome.management.getSelf() и проверьте installType возвращенного < объект href= "http://developer.chrome.com/extensions/management.html#type-ExtensionInfo" rel= "noreferrer" > ExtensionInfo. Если он говорит "development", это означает, что расширение было загружено без распаковки в режиме разработчика. "normal" означает, что он был установлен из файла .crx.

Ответ 2

Вот пример кода, как это сделать:

function isDevMode() {
    return !('update_url' in chrome.runtime.getManifest());
}

Ответ 3

Расширение работает в режиме разработчика (то есть распаковывается), когда оно не содержит поля 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');