Совместимость lib для обмена сообщениями в расширениях, Firefox против Chrome - PullRequest
0 голосов
/ 01 апреля 2019

Теперь кажется (почти) возможным использовать один и тот же код для расширения в Chrome и Firefox. Однако, когда речь идет об отправке сообщений между различными частями расширения (всплывающее окно, контент, фон), все еще существуют несовместимости.

Firefox теперь, кажется, немного впереди, используя новое предложенное пространство имен browser., в то время как Chrome использует chrome.. Firefox также использует обещания, в то время как Chrome здесь все еще использует обратные вызовы.

Итак, я пишу такие функции, как эта, чтобы обойти это:

function extTabsSendMessage(tabsId, msg) {
  if (typeof chrome === "undefined") {
    let smRet = browser.tabs.sendMessage(tabsId, msg);
    console("not chrome, smRet", smRet);
    return smRet;
  }
  return new Promise((resolve, reject) => {
    chrome.tabs.sendMessage(tabsId, msg, function (response) {
        resolve(response);
    })
  });
}

Я полагаю, кто-то еще уже делал это? Есть ли для этого где-нибудь библиотека совместимости? Или, по крайней мере, пост в блоге, который описывает существующие несовместимости в этой области?

...