首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨浏览器扩展

跨浏览器扩展
EN

Stack Overflow用户
提问于 2018-07-14 10:07:21
回答 1查看 705关注 0票数 1

我正在尝试使用TypeScript编写一个跨所有浏览器的扩展。我已经找到了这个包:https://www.npmjs.com/package/web-ext-types,我正在使用它,我已经在我的package.json中设置了它。

在类型记录中,我可以键入浏览器并查看所有intellisense,等等,但是当我在Chrome中运行它时,会得到例外情况:

代码语言:javascript
复制
Uncaught (in promise) ReferenceError: browser is not defined.

我的代码如下:

代码语言:javascript
复制
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/,它建议将它放入:

代码语言:javascript
复制
window.browser = (function () {
    return window.msBrowser ||
        window.browser ||
        window.chrome;
})();

我的问题是,我应该或者应该由网络文本类型来处理这个问题吗?此外,当我试图将它放在TypeScript中的任何地方时,都会得到错误:

类型窗口上不存在属性浏览器。目前,我还包括:

“@type/chrome”:"~0.0.63“

如果我使用的是网络图文类型,我应该删除这个吗?我还在使用chrome.declarativeContent.onPageChanged,它似乎不在浏览器中。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2018-07-14 11:12:49

我想您可能是在寻找chrome.history.onVisited.addListener,它的功能与它在铬中的功能不同,但功能是相似的。

据我所知,在chrome上没有“浏览器”变量,但是,您可能可以做某种类型的填充,它可以工作,原则上。就像浏览器扩展的某种jQuery。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51337428

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档