Определить, установлено ли расширение браузера для Opera

Я создал расширение/надстройку браузера для Chrome, Firefox, Safari и IE, используя Crossrider framework
Теперь, поскольку Crossrider не поддерживает Opera, я создал собственное расширение для него.
Моя проблема заключается в том, как определить, установил ли пользователь (использующий Opera), посещающий наш веб-сайт, расширение или нет?

Ответ на Похожий вопрос . Есть ли лучший вариант?

Или любой простой способ проверить (кроссбраузерно), установлено ли расширение или нет, чтобы мне не приходилось использовать Crossrider.API?

Или есть что-то похожее на window.navigator.plugins для расширений?


person Uttara    schedule 22.05.2013    source источник


Ответы (1)


Вы можете общаться со своей страницей, используя простой content script для вашего домена, только используя функцию window.postMessage.

Код скрипта контента:

window.addEventListener("message", function(event) {
  if (event.source !== window) return;  // We only accept messages from ourselves
  switch (event.data.type) {
    case 'get_info': window.postMessage({type: "info", browser: 'opera'}, "*"); break;
  }
}, false);

Код вашей страницы:

window.addEventListener('load', function () {
  window.addEventListener("message", function (event) {
    switch (event.data.type) {
      case 'info': console.log(`browser is ${event.data.browser}`); break;
    }
  });
  window.postMessage({type: "get_info"}, "*");    
});
person icl7126    schedule 20.08.2018