@Priney

Как осуществить реагирование расширения Chrome на уведомления с сайта?

Имеется некий сайт, который по какому-то событию выводит уведомление в браузер. Требуется, что бы расширение для Google Chrome вызывало некую функцию в случае, если всплыло уведомление с этого сайта.
Первая мысль, это изменить событие onshow в скрипте, отвечающем за уведомления, но, насколько я понял, я не могу напрямую изменять скрипты сайта через расширение, могу лишь взаимодействовать с DOM и вставлять собственные скрипты.
Как быть и что делать? Есть способ проще, чем копирование всего скрипта и вставка с необходимыми изменениями через расширение в сайт, предварительно удаляя старый скрипт из заголовка?
  • Вопрос задан
  • 2775 просмотров
Пригласить эксперта
Ответы на вопрос 1
jusio
@jusio
Senior Software Engineer at Restlet
Первый способ, самый простой

В манифесте перечислить домены с которых можно подключаться:

"externally_connectable": {
  "matches": ["https://somesites.com/*"]
}


В скриптах страницы теперь можно будет посылать сообщения этому расширению:
if(chrome && chrome.runtime && chrome.runtime.sendMessage){
var editorExtensionId = "уникальный идентификатор раширения";
chrome.runtime.sendMessage(editorExtensionId, {notification:"Some notification"});
}

Обработка сообщений в расширении:
chrome.runtime.onMessageExternal.addListener(
  function(request, sender, sendResponse) {
    if (sender.url != "https://somesites.com")
      return;  
    showNotification(request.notification);
  });


Пример из официальной документации

Второй способ
Из контекста страницы можно посылать сообщения при помощи window.postMessage. Content script способен обрабатывать такие сообщения и далее передавать их в расширение.

Пример из официальной документации
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы