构建一个跨浏览器的扩展程序

您所在的位置:网站首页 高三物理基础题的书 构建一个跨浏览器的扩展程序

构建一个跨浏览器的扩展程序

2024-01-21 11:28| 来源: 网络整理| 查看: 265

在四个主要浏览器中,有两种方法可以处理异步事件:

promises 是 Firefox 使用的扩展 API 的标准 callbacks 是 Chrome、Edge 和 Opera 使用的扩展 API 的标准

Firefox 还支持 chrome.* 命名空间中的 callbacks 风格的 API,这主要是为了便于从 Chrome 迁移。然而,应该首选使用 promises(以及 browser.* 命名空间),它已被采纳为拟议标准的一部分。它极大地简化了异步事件处理,特别是在需要将事件链接在一起的情况下。

备注: 如果你对这两种方法之间的差异不熟悉,可以看一下 了解异步 JavaScript: Callbacks、Promises 和 Async/Await 或者 MDN 的 Using promises 页面。

浏览器扩展 API 的垫片(Polyfill)

那么,当 Firefox 是唯一支持它的浏览器时,你如何轻松地使用 promises 呢?解决方案是使用 promises 为 Firefox 编程,并使用浏览器扩展 API 的垫片(Polyfill)!

这个 polyfill 解决了跨 Firefox、Chrome 和 Opera 的 API 名称空间和异步事件处理。在撰写本报告时 (2018 年 11 月) ,Edge 的支持正在开发中。

要使用 polyfill,可以使用 npm 安装到开发环境中,或者直接从 GitHub Relase 页面下载。

然后,引入 browser-polyfill.js 到:

manifest.json,修改后使它可以用于 background 和 content 脚本 HTML 文件,例如 browserAction 弹出窗口或标签页 使用 tabs.executeScript 上的 executeScript 动态注入脚本(不需要事先在 manifest.json 的 content_scripts 中申明

例如,这个 manifest.json 代码让你的后台脚本可以使用 polyfill:

json{ // ... "background": { "scripts": ["browser-polyfill.js", "background.js"] } }

你的目标是确保在任何其他扩展脚本执行 browser.* API 前执行 polyfill。

备注: 关于如何使用模块打包器使用 polyfill 的更多细节和信息,请参阅 GitHub 上的项目自述文件。

还有其他的 polyfill 选项,但是在撰写本文时,没有一个提供浏览器扩展 API polyfill 的覆盖范围。所以,如果你没有把 Firefox 作为你的首选,你的选择就是接受 polyfills 的限制,移植到 Firefox 并添加跨浏览器的支持,或者开发你自己的 polyfill。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3