跨浏览器扩展

时间:2018-07-14 10:07:22

标签: typescript browser-extension

我正在尝试使用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,它似乎不在浏览器中。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为您可能正在寻找chrome.history.onVisited.addListener,它的功能与chrome中的不完全相同,但是功能相似。

据我所知,

在chrome上没有“浏览器”变量,但是,原则上您可以进行某种形式的polyfill。 就像某种用于浏览器扩展的jQuery。