构建一个跨浏览器的扩展程序 |
您所在的位置:网站首页 › 高三物理基础题的书 › 构建一个跨浏览器的扩展程序 |
在四个主要浏览器中,有两种方法可以处理异步事件: 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 |