Я пытаюсь написать расширение, используя TypeScript, которое работает во всех браузерах. Я нашел этот пакет: https://www.npmjs.com/package/web-ext-types, которые я использую и настроил в своем package.json.
В машинописном тексте я могу ввести браузер и увидеть всю информацию и т. Д., Но когда я запускаю его в Chrome, я получаю исключение:
Uncaught (in promise) ReferenceError: browser is not defined.
Мой код ниже:
browser.webNavigation.onHistoryStateUpdated.addListener((e) => {
console.log("webNavigation onHistoryStateUpdated");
console.log(e);
// do something here
});
Я новичок в машинописи и расширениях браузера, если я перейду на Chrome, он будет работать нормально, но тогда не будет поддерживаться в IE/Firefox (может быть, в Firefox?). Я нашел эту статью: https://www.smashingmagazine.com/2017/04/browser-extension-edge-chrome-firefox-opera-brave-vivaldi/, в котором предлагается добавить это:
window.browser = (function () {
return window.msBrowser ||
window.browser ||
window.chrome;
})();
Мой вопрос в том, должен ли я это делать или должны ли веб-расширения обрабатывать это? Также, когда я пытаюсь поместить это где-нибудь в TypeScript, я получаю сообщение об ошибке:
Браузер свойств не существует для окна типа. В настоящее время я также в том числе:
"@types/chrome": "~0.0.63",
Должен ли я удалить это, если я использую типы web-ext? Я также использую chrome.declarativeContent.onPageChanged, которого, похоже, нет в браузере.
Спасибо за любую помощь.