Проверьте, установлено ли расширение 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');