typescript - 跨浏览器扩展
问题描述
我正在尝试使用适用于所有浏览器的 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 ,它似乎不在浏览器中。
谢谢你的帮助。
解决方案
我认为您可能正在寻找chrome.history.onVisited.addListener,它与 chrome 中的功能并不完全相同,但功能相似。
据我所知,chrome 上没有“浏览器”变量,但是,您也许可以制作某种 polyfill,原则上它可以工作。就像某种用于浏览器扩展的 jQuery。
推荐阅读
- zsh - 在 iTerm/ZSH 中如何绑定 Command-b 向后移动一个单词?
- python - 在文档行中查找字符串,然后从之前的行之一中获取值
- git - 为什么另一行的更改会出现 git merge 冲突?
- azure - TLS1.2 上的 Azure 应用服务到应用服务通信失败
- typescript - i18next:在 TypeScript 中映射对象数组
- javascript - 我的 Discord 机器人多次响应一个命令,我想知道是否有办法只发送一次
- node.js - 套接字 io 在套接字连接时创建房间
- acumatica - Acumatica 中的可搜索用户定义字段
- command-line - 如何从任何文件夹运行 Windows 命令?
- sql - isdate 查询(ssrs 更新到 2017)