Safari 17.1 中的 WebKit 功能
今天我们很高兴分享 Safari 17.1 中 WebKit 的新功能。它现在可用于 iOS 17、iPadOS 17、macOS Sonoma、macOS Ventura 和 macOS Monterey。
托管媒体源
Safari 17.1 现在将新的托管媒体源 API 带到了 iPhone。托管媒体源最初随 Safari 17.0 在 iPad 和 Mac 上发布,它是一种高效节能、低级别的视频流媒体工具包。
观看流媒体视频是我们所有设备上都能实现的惊人体验。但要在不下载任何不必要数据且不耗尽电池的情况下获得最高质量的视频,每次点击播放按钮时都需要一套复杂的技术在后台运行。自适应比特率流媒体是一种根据互联网连接速度和设备能力,甚至在条件变化时,实时切换媒体数据格式的技术。
多年来,许多网站都使用 媒体源扩展 (MSE) 来处理自适应比特率流媒体。它是一种低级别工具包,赋予网页更多控制权和更多责任来管理缓冲和分辨率。但 MSE 在管理缓冲级别、网络访问和媒体变体选择方面表现不佳。此外,它耗电量大,这在电池较小的移动设备上尤其令人头疼。
托管媒体源在不带来任何缺点的情况下,增加了 MSE 的功能。我们很高兴能向 W3C 媒体工作组提议 ManagedMediaSource
进行正式标准化。
请注意,仅当存在 AirPlay 源替代方案或明确禁用远程播放时,才支持托管媒体源。
const videoSource1 = document.createElement('source');
videoSource1. type = 'video/mp4' ;
videoSource1.src = URL.createObjectURL(mediasource);
video.appendChild(videoSource1) ;
const videoSource2 = document.createElement('source');
videoSource2. type = 'application/x-mpegURL' ;
videoSource2.src = "http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8";
video.appendChild(videoSource2);
通过观看 WWDC23 上的探索网页媒体格式,了解有关托管媒体源 API 的所有信息。

Safari 扩展更新
Safari 17.1 还增加了对 storage.session.setAccessLevel
的支持,并默认将 storage.session
更新为仅可通过 TRUSTED_CONTEXTS
访问。
错误修复
适用于 Safari 17.1 的 WebKit 提供了多项错误修复和功能改进。
辅助功能
- 修复了在 iOS 上正确暴露
<details>
元素展开状态的问题。(109684906) - 修复了将带有
display: contents
的role="row"
元素中单元格的列标题暴露给辅助技术的问题。(115190637) - 修复了带有
display: contents
且其子文本以换行符开头的role="treeitem"
元素辅助功能标签为空的问题。(115226509)
认证
- 修复了通过可扩展企业单点登录进行认证时,如果认证在服务器端被取消可能导致挂起的问题。(105809792)
CSS
- 修复了
font-size-adjust
切换system-ui
字体大小的问题。(111709567) - 修复了计数器值以防止它们溢出或下溢。(111743827)
- 修复了
contain-intrinsic-size
的auto none
支持。(112479718)
JavaScript
- 修复了带有不同最小长度备选项的正向后瞻正则表达式。(112952197)
加载
- 修复了一个问题,该问题涉及一个变通方法,用于处理网站提供带有格式错误填充的数据 URL 的情况。此问题导致当 Word 文档中的某些图片由 Box 和 Sharepoint 托管时无法显示。(114573089)
媒体
- 修复了全屏就绪检查以移除层级要求。(110004138)
- 修复了 HTTP 直播流 (HLS) 视频可能在其视频元素帧内偏移和裁剪的问题。(110467872)
- 修复了从横屏切换到竖屏时视频消失的问题。(112416568)
- 修复了垂直多行 WebVTT 字幕被截断的问题。(112951878)
- 修复了在 Safari 中加载请求用户媒体的网站后,AirPods 空间音频质量下降的问题。(113604970)
- 修复了在 Safari 中按下返回按钮后,媒体会播放声音但没有视频的问题。(113605284)
- 修复了类型为
application/x-mpegURL; codecs="avc1.42E01E"
的媒体无法在 Safari 中播放的问题。(113608345) - 修复了由 MediaSource 支持的媒体元素可能不会收到
seeked
事件的问题。(114594559)
性能
- 修复了一个导致基于 WebKit 的应用在恢复时性能不佳的错误,包括导致黑屏或应用先前状态的模糊快照暂时对用户可见。(114795818)
渲染
- 修复了在全屏内容中滚动条有时会意外显示的问题。(113605155)
- 修复了一个可能导致网站在无痕浏览模式下布局不正确的问题。(113607432)
- 修复了对带有
display: none
的 iframe 的处理。(112494003)
Web API
- 修复了当网页内容使用 WebSockets 时可能导致崩溃的问题。(75425816)
- 修复了在分配
adoptedStyleSheet
数组时,adoptedStyleSheet
CSSStyleSheet 实例间歇性被移除的问题。(107768559) - 修复:改进了滚动时 IntersectionObserver 操作的性能。(111120491)
- 修复了
ElementInternals.setFormValue(<nullish value>)
以清除提交值。(111802198) - 修复了如果
keyup
的默认行为被阻止,按下向下箭头后键盘滚动不会停止的问题。(112396756) (FB12647732) - 修复了
window.postMessage
与带有隔离世界消息监听器的 OffscreenCanvas 的问题。(112618195) - 修复了一个可能导致影子 DOM 内的嵌套弹出元素不正确地关闭其祖先弹出元素的问题。(113604250)
Web 应用
- 修复了 macOS 上已解除通知的处理。(113756668)
网页检查器
- 修复了控制台输出带有多个使用相同名称的私有字段的对象的问题。(109215331)
- 修复:停止对数字控制台格式说明符使用
Number.prototype.toLocaleString()
。(112170843)
WebGL
- 修复了在 iPadOS 上 Safari 移至后台后,会产生不必要的“WebGL: context lost.”错误的问题。(115500744)
更新
如果您正在运行 macOS Ventura 或 macOS Monterey,可以通过前往“软件更新”并点击“更多信息”来更新 Safari。在 macOS Ventura 上,路径是 > 系统设置 > 通用 > 软件更新 > 更多信息。要在 iPhone 或 iPad 上获取 Safari 17.1,请前往“设置”>“通用”>“软件更新”,然后轻点更新。
下载最新的 Safari 技术预览版,以保持在网页平台的前沿,并使用最新的网页检查器功能。
反馈
我们期待您的反馈。要分享您对 Safari 17.1 的看法,请在 Mastodon 上找到我们:@jensimmons@front-end.social 和 @jondavis@mastodon.social。或者在 X 上向 @webkit 发送回复。如果您遇到任何问题,欢迎您就 Safari UI 提供反馈,或提交关于网页技术或网页检查器的 WebKit 错误报告。提交问题确实有所帮助。
您还可以在Safari 17.1 发布说明中找到此信息。