«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как определить, установлено ли расширение Chrome с помощью JavaScript?

Как определить, установлено ли расширение Chrome с помощью JavaScript?

Опубликовано 23 ноября 2024 г.
Просматривать:617

How can I detect if a Chrome extension is installed using JavaScript?

Обнаружение установки расширения Chrome в JavaScript

При создании расширения Chrome может возникнуть необходимость определить, установлено ли расширение изнутри внешний JavaScript-скрипт. Это помогает настраивать веб-контент в зависимости от наличия расширения.

Согласно документации Chrome, этого можно добиться посредством передачи сообщений с веб-сайта на расширение.

Реализация кода

В файле Background.js расширения (или любом другом скрипте, не являющемся содержимым) добавьте сообщение прослушиватель:

chrome.runtime.onMessageExternal.addListener(
  function(request, sender, sendResponse) {
    if (request) {
      if (request.message) {
        if (request.message == "version") {
          sendResponse({version: 1.0});
        }
      }
    }
    return true;
  }
);

Этот прослушиватель будет получать сообщения с веб-сайта.

Из сценария веб-сайта отправьте сообщение на идентификатор расширения:

var hasExtension = false;

chrome.runtime.sendMessage(extensionId, { message: "version" },
  function (reply) {
    if (reply) {
      if (reply.version) {
        if (reply.version >= requiredVersion) {
          hasExtension = true;
        }
      }
    } else {
      hasExtension = false;
    }
  }
);

Проверьте переменную hasExtension, чтобы определить, установлено ли расширение.

Конфигурация манифеста

Не забудьте добавить запись в файл манифеста.json файл с указанием доменов, которым разрешено отправлять сообщения с расширением:

"externally_connectable": {
  "matches": ["http://mylocalhostextensiontest/*", "http://*:*/*"]
},

Асинхронный характер и обработка ошибок

Обратите внимание, что механизм передачи сообщений является асинхронным, поэтому вам может потребоваться обработать это в вашем коде.

Кроме того, если расширение не установлено или отключено, chrome.runtime.sendMessage выдаст исключение. В таких случаях проверьте наличие chrome.runtime.lastError после отправки сообщения:

if (chrome.runtime.lastError) {
  // Handle the error here...
}
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3