Categories
程式開發

苹果:你甚至可以在 Safari 中使用 Chrome 的插件


苹果于近日宣布,Safari 将采用与 Chrome、Firefox 和 Edge 相同的扩展技术 WebExtensions API。

Chrome 有着庞大的扩展生态系统,各种各样的扩展程序为 Chrome 提供了诸多便利的功能,使得 Chrome 深受用户和开发者的喜爱,其他厂商也纷纷尝试在自家浏览器中加入扩展程序功能。为了让开发者不需要写多套代码,Mozilla 发布了 WebExtensions API。WebExtensions API 主要基于 JavaScript、HTML 和 CSS,可以重新打包并在 Chrome、Firefox 和 Edge 等其他浏览器中使用。据 Mozilla 的官网介绍,该 API 旨在:

  • 使附加组件在各浏览器之间的移植变得更容易;
  • 审查 addons.mozilla.org (AMO) 的附加组件变得更容易;
  • 加强多进程 Firefox 的兼容性(例如 Electrolysis 项目);
  • 对 Firefox 内部代码进行更改时不会破坏附加组件;
  • WebExtensions API 应该比现有的 Firefox XPCOM/XUL API 更容易使用;
  • WebExtensions API 应该保持可接受的安全和隐私标准。

随着主流浏览器都采用 WebExtensions API,这项扩展技术也逐渐成为了不成文的标准,既方便用户从一个浏览器切换到另一个浏览器,又可以提高前端开发者的开发效率。最早使用这一 API 的是 Firefox,从 v57 版本开始正式采用 WebExtensions API。此后,多家浏览器厂商也纷纷采用该 API,除了苹果。虽然总是被开发者抱怨,但苹果一直没有引入该功能。

近日,苹果宣布 Safari 也可以使用 WebExtensions API 了。苹果此前所使用的 Safari App Extensions 虽然在 macOS 应用程序和 Safari 之间共享代码很便捷,但无法将组件移植到其他浏览器,也无法将其他浏览器的组件移植到 Safari 中。

据苹果官网介绍,开发者需要使用 Xcode 对其进行打包,以在 Safari 中进行测试,同时开发者需要是 Apple Developer Program 的成员才能将项目上传到 App Store。创建 Safari Web 扩展程序,有两种方式:

  • 将现有的扩展程序转换为 Safari Web 扩展程序。这样可以在 macOS 的 Safari 浏览器中使用该程序并且可以上传至 App Store。开发者可以使用 Xcode 中的命令行工具来简化此过程;
  • 使用内置模板在 Xcode 中构建新的 Safari Web 扩展。然后,开发者可以重新打包该文件,以在其他浏览器中进行部署。

值得注意的是,Safari Web 扩展需要在 macOS 11 及更高版本或者安装了 Safari 14 的 macOS 10.14.6 或 10.15.6 中使用。

苹果为了让用户使用 Safari 做了诸多努力:苹果早些时间修改了“隐私权”偏好设置,可以阻止跨站追踪和阻挡所有 Cookie;加入了“网页翻译”功能等。此次还在 Safari 中引入 WebExtensions API,使开发者可以通过 Safari WebExtension Converter 开发工具将 Chrome 和 Firefox 等浏览器的插件直接移植到 Safari 中。1Password 开发商 Agilebits 也在前不久宣布会将旗下 1Password X 浏览器插件移植到 Safari 上。

根据苹果官方的说法,Safari 在性能方面领先于所有浏览器,比 Chrome 快 50% 以上。同时还拥有更低的功耗,Safari 在视频观看方面比 Chrome 和 Firefox 多出了最高达 3 小时的续航时间,浏览方面多出了 1 小时的续航时间。

苹果:你甚至可以在 Safari 中使用 Chrome 的插件 1

图片来源于苹果官网

如果 Chrome 中的扩展程序全都可以在 Safari 中使用,你会选择更换浏览器吗?欢迎在评论区分享你的看法。