我正在尝试使用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;
})();
我的问题是我必须还是应该由web-ext-types处理?另外,当我尝试将其放在TypeScript中的任何地方时,也会收到错误消息:
属性浏览器在类型窗口上不存在。目前,我还包括:
“ @ types / chrome”:“〜0.0.63”,
如果我使用的是web-ext-types,应该删除它吗?我还在使用chrome.declarativeContent.onPageChanged,它似乎不在浏览器中。
感谢您的帮助。
答案 0 :(得分:0)
我认为您可能正在寻找chrome.history.onVisited.addListener,它的功能与chrome中的不完全相同,但是功能相似。
据我所知,在chrome上没有“浏览器”变量,但是,原则上您可以进行某种形式的polyfill。 就像某种用于浏览器扩展的jQuery。