Safari 11 中的 WebKit 新功能
随着 iOS 11 和 macOS High Sierra 的发布,新版 Safari 为网络带来了显著的性能提升和强大的 WebKit 新功能。此版本采取了大胆的措施,以遏制在网络上普遍存在的常见烦恼。开发者了解这些可能如何影响他们的网站非常重要。WebKit 包含一个比以往任何时候都更快的 JavaScript 引擎,并增加了 WebAssembly 和 WebRTC 等变革性功能。我们迫不及待地想看到开发者将用它们构建出什么。
以下是使 Safari 11 成为一个重要版本的功能亮点。
WebRTC 和媒体捕获
WebKit 对 WebRTC 和媒体捕获与流 API 的支持,将浏览器之间的实时通信带到了 Safari。对这两种技术标准的支持结合,使开发者无需使用插件即可将视频会议体验带到网络上。WebKit 在底层使用 libWebRTC,以实现互操作性并为高效视频会议提供坚实的功能基础。
在有关 WebRTC 的WebKit 博客文章中阅读更多内容。
WebAssembly
WebKit 增加了对 WebAssembly 的支持,作为 JavaScript 程序的补充。它是一种低级二进制格式,旨在作为 C++ 等现有语言的编译目标。它不能做 JavaScript 所能做的一切,但它与 JavaScript 协同工作以加速计算密集型操作。WebKit 中的实现支持 x86-64 和 ARM64 平台。
了解更多关于 WebKit 中的 WebAssembly。
可变字体
开发者可以使用可变字体(Variable Fonts)来提高网站的加载性能,并为设计师提供对排版更精细的控制。这是一种经过特殊格式化的字体文件,其中包含描述字体在不同特征轴(如字重、大小或斜角)上变化的数值。WebKit 中的实现还增加了可动画的 CSS 属性支持,允许网页作者将流畅的动态效果融入到排版变化中。
阅读更多关于网络上的可变字体,了解更多信息。
计时 API
WebKit 对资源计时(Resource Timing)、性能时间线(Performance Timeline)和用户计时(User Timing)API 的支持,使开发者能够衡量其 Web 应用程序的性能特征。资源计时 API 可以收集详细的网络计时数据,例如获取特定资源所需的时间。性能观察者(Performance Observers)允许您异步收集计时指标而不会阻塞应用程序。而用户计时 API 允许开发者设置与浏览器性能时间线关联的特定于应用程序的时间戳。
阅读 资源计时、性能时间线 和 用户计时 规范以获取更多详细信息。
WebCrypto API 更新
WebKit 中对 WebCrypto API 的支持已更新,以包含符合标准的 SubtleCrypto 实现。这包括用于导入和导出非对称密钥的 DER 编码支持。耗时的密码学方法现在异步执行,甚至可以在 Web Worker 中运行。对许多新加密算法的支持增加了新功能、更高的效率和改进的安全性。
了解更多关于WebKit 中的 WebCrypto 更新。
Web 检查器改进
Web 检查器为开发者带来了多项实用的新功能。当系统设置为从右到左的语言时,Web 检查器将显示从右到左的用户界面布局。它还增加了一个新的“设置”选项卡,用于 Web 检查器偏好设置。在“网络”选项卡中,现在可以检查 Web Socket 连接以显示通过连接传输的数据。最后,在“元素”选项卡中,当子树或属性被修改或节点被移除时,开发者可以在元素上设置调试断点。
智能追踪预防
WebKit 利用机器学习识别您访问的网站上的跨站追踪,并将其关闭。这不仅阻止了跟踪用户在网络上的广告,还帮助用户更好地控制和了解使用他们数据的网站和服务。这项功能旨在保护用户,并在整个网络上推行更好的用户隐私实践。
了解更多关于 WebKit 中的智能追踪预防。
macOS 上的视频自动播放阻止
去年在 iOS 上引入的自动播放阻止策略启发了 macOS 版 Safari 的新视频自动播放阻止功能。简单来说,带声音的自动播放视频将被暂停。没有音轨或静音的视频元素仍可自动播放。此版本还包括对视频元素 `play` 方法的支持,该方法会返回一个 Promise,以便轻松处理视频播放的成功或失败。
阅读更多关于macOS 上的自动播放阻止,其中包含一个关于如何使用 Promise 处理自动播放成功或阻止的实用示例。
更多 Web 平台功能
增加了对 history.scrollRestoration
的支持,以便开发者控制用户通过浏览器历史记录导航回退时何时保持滚动位置。
新增的 CSS 填充和描边模块支持为开发者提供了更多工具,可以通过新的 fill-
和 stroke-
属性控制文本和 SVG 图稿的绘制方式。
改进的 Flexbox 实现使其符合当前规范,并带来更好的布局性能。
CSS 滚动吸附已更新,为主文档框架、溢出滚动容器添加了滚动吸附功能,并增加了对 scroll-snap-proximity
的支持。
用户体验增强
此外,还有几项以用户为中心的更改旨在增强用户体验,这些更改可能会影响 Web 开发。透明图层上渲染的文本与常规文本保持一致,以实现始终如一的美观文本。大型图像的解码是异步进行的,以保持动画流畅,避免动画中的掉帧。现在,顶级文档、iframe 和应用程序中的 Web 视图之间的滚动速度保持一致。最后,当在 iOS 上分享文章链接时,将使用文章的规范链接。
反馈
所有这些改进都适用于运行 iOS 11 和 macOS High Sierra,以及 macOS Sierra 和 OS X El Capitan 的用户。这些功能也通过 Safari 技术预览版向 Web 开发者提供。Safari 本次版本中的更改已包含在以下 Safari 技术预览版中:21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36。下载最新的 Safari 技术预览版,以抢先体验未来的 Web 功能。您还可以使用 WebKit 功能状态页面来关注您喜欢的 Web 平台功能的更改。
我们很高兴听到您的反馈。请向 @webkit 或 @jonathandavis 发送推文,分享您对本次发布版本的看法,以及您希望但未实现的功能。如果您遇到任何问题,欢迎提交针对 Safari 的错误报告,或针对 Web 内容问题的WebKit 错误报告。