Safari 16.4 中的 WebKit 功能
今天,我们很高兴地向您介绍 Safari 16.4 中包含的 WebKit 众多新增功能。此版本包含 135 项新网页功能和 280 多项完善更新。让我们一起来看看。
您可以在 macOS Ventura、macOS Monterey、macOS Big Sur、iPadOS 16 和 iOS 16 上体验 Safari 16.4。若要在 macOS Monterey 或 macOS Big Sur 上更新到 Safari 16.4,请前往“系统偏好设置”→“软件更新”→“更多信息”,然后选择更新 Safari。或者,若要在 macOS Ventura、iOS 或 iPadOS 上更新,请前往“设置”→“通用”→“软件更新”。
iOS 和 iPadOS 上的网页推送
iOS 和 iPadOS 16.4 为添加到主屏幕的网页应用增加了网页推送支持。网页推送使网页开发者能够通过使用 Push API、Notifications API 和 Service Workers 向其用户发送推送通知。
网页应用的网页推送通知与 iOS 和 iPadOS 深度集成,其工作方式与来自其他应用的通知完全相同。它们显示在锁定屏幕、通知中心和配对的 Apple Watch 上。专注模式为用户提供了精确配置何时何地接收网页推送通知的方式——让用户完全掌控体验。有关更多详细信息,请阅读iOS 和 iPadOS 上的网页应用的网页推送。
网页应用改进
iOS 和 iPadOS 16.4 上的 WebKit 增加了对 Badging API 的支持。它允许网页应用开发者像 iOS 或 iPadOS 上的任何其他应用一样显示应用徽章计数。当用户允许通知时,主屏幕网页应用使用 Badging API 的权限会自动授予。
为了支持同一网页应用的多次安装的通知和徽章,WebKit 增加了对 Web Application Manifest 标准的 id
成员的支持。这样做继续为用户提供了保存网页应用多个副本的便利性,例如登录到不同的帐户,将工作和个人使用分开——当与能够使用不同应用集自定义主屏幕页面以适应每个专注模式的功能结合使用时,这尤其强大。
iOS 和 iPadOS 16.4 还增加了对第三方网页浏览器在共享菜单中提供“添加到主屏幕”的支持。有关浏览器如何实现支持以及网页应用所有改进的更多信息,请阅读iOS 和 iPadOS 上的网页应用的网页推送。
我们继续深切关注广大网页开发者的需求和用户的日常体验。请继续向我们发送您的想法和请求。还有更多工作要做,我们对这个领域的发展前景感到无比兴奋。
Web Components
Web Components 是一套技术套件,它们共同使得创建具有封装功能的、可重用的自定义 HTML 元素成为可能。Safari 16.4 通过几项强大的新功能改进了对 Web Components 的支持。
Safari 16.4 增加了对声明式 Shadow DOM 的支持,允许开发者无需使用 JavaScript 即可定义 shadow DOM。它还增加了对 ElementInternals
的支持,为 Web Components 改进可访问性提供了基础,同时使自定义元素能够与内置表单元素一起参与表单。
此外,现在还支持命令式 Slot API。插槽定义了内容在自定义元素模板中的位置。命令式 Slot API 允许开发者在 JavaScript 中为插槽元素指定分配的节点,以增加灵活性。
CSS
Safari 16.4 增加了对许多新 CSS 属性、值、伪类和语法的支持。我们很自豪能够在网页图形设计未来的几个领域中引领潮流。
外边距修剪 (Margin Trim)
margin-trim
属性可用于消除与其容器相邻的元素的外边距。例如,假设我们有一个 section
元素,其内部包含一个 h2
标题和几个段落。该部分被样式化为卡片,具有米白色背景和一些填充。像往常一样,标题和段落都具有顶部和底部外边距——它们之间提供了空间。但我们实际上不希望在第一个标题上方或最后一个段落之后有外边距。这些外边距会添加到填充中,并创建比预期更多的空间。

网页开发者通常通过使用 h2 { margin-block-start: 0 }
删除标题的顶部边距,并使用 p:last-child { margin-block-end: 0 }
删除最后一个段落的底部边距来处理这种情况——并希望一切顺利。但是,当意外内容放置在此框中时,就会出现问题。也许另一个实例以 h3
开头,但没有人编写代码来删除该 h3
的顶部边距。或者第二个 h2
被写入框中间的文本中,现在它缺少所需的顶部边距。
margin-trim
属性允许我们编写更健壮和灵活的代码。我们可以避免从单个子元素中删除边距,而是将 margin-trim: block
放在容器上。
section {
margin-trim: block;
}

这会告诉浏览器:请修剪任何与容器相邻的边距。规则 margin-trim: block
在块方向修剪边距,而 margin-trim: inline
在内联方向修剪边距。
在 Safari 16.4 或 Safari Technology Preview 中亲自尝试此演示以查看结果。
排版
Safari 16.4 还增加了对新行高和根行高单位 lh
和 rlh
的支持。现在您可以将任何度量设置为相对于行高。例如,您可能希望将段落上方和下方的边距设置为与行高匹配。
p {
font-size: 1.4rem;
line-height: 1.2;
margin-block: 1lh;
}
lh
单位引用元素的当前行高,而 rlh
单位引用根行高——非常类似于 em 和 rem。
Safari 16.4 增加了对 font-size-adjust
的支持。此 CSS 属性提供了一种在不同字体被使用时保持文本的视觉大小和可读性的方法。虽然网页开发者可以告诉浏览器使用特定的字体大小排版文本,但现实情况是不同的字体会呈现出不同的视觉大小。当单个段落中使用多种字体时,您可以特别看到这种差异。在以下演示中,正文文本设置为衬线字体,而代码以等宽字体排版——它们看起来不是相同的大小。由此产生的 x 高度差异可能会严重干扰阅读。该演示还为不同的操作系统提供了各种字体回退选项,这引入了更多的复杂性。有时等宽字体比正文文本大,有时又小,具体取决于实际使用的字体系列。font-size-adjust
属性为网页开发者提供了解决此问题的方法。在这种情况下,我们只需编写 code { font-size-adjust: 0.47; }
来请求浏览器调整代码字体的大小以匹配正文字体的实际字形大小。

font-size-adjust
的实际效果。为了完善对字体大小关键字的支持,Safari 16.4 现在支持 font-size: xxx-large
。
伪类
Safari 16.4 还增加了对几个新伪类的支持。针对特定的文本方向,:dir()
伪类允许您根据语言脚本是 ltr
(从左到右)还是 rtl
(从右到左)来定义样式。例如,您可能希望根据文本方向将徽标图像稍微向左或向右旋转。
img:dir(ltr) { rotate: -30deg; }
img:dir(rtl) { rotate: 30deg; }
除了取消 Fullscreen API 的前缀(见下文)外,CSS :fullscreen
伪类现在也取消了前缀。在 Safari 16.4 中,:modal
伪类也匹配全屏元素。
Safari 16.4 增加了 :has()
对 :lang
伪类的支持,从而可以在页面使用特定语言时为页面的任何部分设置样式。此外,以下媒体伪类现在在 :has()
内部动态工作,为音频和视频处于不同播放或操作状态时设置样式打开了无限可能——:playing
、:paused
、:seeking
、:buffering
、:stalled
、:picture-in-picture
、:volume-locked
和 :muted
。要了解更多关于 :has()
的信息,请阅读将 :has() 用作 CSS 父选择器及更多。
颜色
Safari 16.4 增加了对相对颜色语法 (Relative Color Syntax) 的支持。它提供了一种以更动态的方式指定颜色值的方法。也许您想使用蓝色十六进制值,但使其半透明——将其传递到 hsl
颜色空间进行计算。
section { background: hsl(from #1357a6 h s l / 0.5); }
或者,您可能希望将颜色定义为变量,然后使用 lch
颜色空间中的数学公式调整该颜色,告诉它将亮度(l
)减半,使用 calc(l / 2)
,同时保持色度(c
)和色相(h
)不变。
:root {
--color: green;
}
.component {
--darker-accent: lch(from var(--color) calc(l / 2) c h);
}
相对颜色语法功能强大。它最初出现在 2021 年 2 月的 Safari Technology Preview 122 中,我们一直在等待 CSS 工作组完成其工作,以便我们发布。MDN 或 Can I Use 上尚未有关于相对颜色语法的文档,但很快就会有。同时,Color 5 规范是了解所有相关内容的最佳位置。
去年 12 月,Safari 16.2 增加了对 color-mix()
的支持。作为另一种指定颜色值的新方法,color-mix
的函数表示法使得告知浏览器以特定颜色空间混合两种不同的颜色成为可能。
Safari 16.4 增加了对在 color-mix()
中使用 currentColor
的支持。例如,假设我们想获取当前的文本颜色,并将其与白色混合 50% 作为悬停颜色。我们希望混合的数学计算在 oklab
颜色空间中进行。我们可以通过以下方式实现:
:hover {
color: color-mix(in oklab, currentColor 50%, white);
}
Safari 16.2 还在去年 12 月增加了对渐变插值颜色空间的支持。它允许渐变的插值数学——确定中间颜色值的方法——在不同的颜色空间中进行。此插图显示了默认的 sRGB 插值与 lab
和 lch
颜色空间中的插值之间的差异。
Safari 16.4 增加了对新系统颜色关键字的支持。可以把它们想象成代表用户、浏览器或操作系统建立的默认颜色的变量——这些默认值会根据系统是设置为浅色模式、深色模式、高对比度模式等而变化。例如,Canvas
表示 HTML 页面的当前默认背景颜色。像 CSS 中的其他命名颜色一样使用系统颜色关键字。例如,h4 { color: FieldText; }
会将 h4
标题的样式设置为与表单字段内部文本的默认颜色匹配。当用户从浅色模式切换到深色模式时,h4
颜色也会自动改变。在 CSS Color level 4 中查找系统颜色的完整列表。
媒体查询语法改进
Safari 16.4 增加了对 Media Queries level 4 中的语法改进的支持。范围语法提供了另一种编写宽度或高度值范围的方式。例如,如果您想定义在浏览器视口宽度在 400 到 900 像素之间时应用的样式,在原始 Media Query 语法中,您会写成:
@media (min-width: 400px) and (max-width: 900px) {
...
}
现在,借助 Media Queries level 4 中的新语法,您可以改为编写:
@media (400px <= width < 900px) {
...
}
这是自容器查询最初在 Safari 16.0 中发布以来一直存在的相同范围语法。
Media Queries level 4 还带来了更易于理解的语法,用于使用布尔逻辑 and
、not
和 or
组合查询。例如:
@media (min-width: 40em), (min-height: 20em) {
@media not all and (pointer: none) {
...
}
}
可以大大简化为:
@media ((min-width: 40em) or (min-height: 20em)) and (not (pointer: none)) {
...
}
或者,结合范围语法更改,可以写成:
@media ((40em < width) or (20em < height)) and (not (pointer: none)) {
...
}
自定义属性
Safari 16.4 增加了对 CSS 属性和值 API 的支持,并支持 @property
at-rule。它通过允许开发者指定变量的语法、继承行为和变量初始值来大大扩展了 CSS 变量的功能——类似于浏览器引擎定义 CSS 属性的方式。
@property --size {
syntax: "<length>";
initial-value: 0px;
inherits: false;
}
借助 @property
支持,开发者可以在 CSS 中实现以前不可能实现的功能,例如动画渐变或转换的特定部分。
Web Animations
Safari 16.4 包含一些 Web 动画的其他改进。您可以对自定义属性进行动画处理。现在支持动画混合不匹配的滤镜列表。Safari 现在支持 KeyframeEffect.iterationComposite
。
轮廓 + 边框半径
在此之前,如果网页开发者为具有自定义 outline-style
的元素设置了 outline
样式,并且该元素具有圆角,则 Safari 中的轮廓不会遵循曲线。现在在 Safari 16.4 中,outline
总是遵循 border-radius
的曲线。
CSS Typed OM
Safari 16.4 增加了对 CSS Typed OM 的支持,它可用于将 CSS 值公开为类型化的 JavaScript 对象。CSSColorValues
的输入验证也作为 CSS Typed OM 的一部分得到支持。可构造和可采用的 CSSStyleSheet
对象的支持也来到了 Safari 16.4。
HTML
Safari 16.4 现在支持使用 loading="lazy"
延迟加载 iframe。例如,您可以将其放在视频嵌入 iframe 上,例如,告知浏览器如果此元素在屏幕外,则无需加载,直到用户即将将其滚动到视图中。
<iframe src="videoplayer.html" title="This Video"
loading="lazy" width="640" height="360" ></iframe>
顺便说一句,您应该始终在 iframe 上包含 height 和 width 属性,这样浏览器可以在 iframe 加载之前为其在布局中保留空间。如果您使用 CSS 调整 iframe 大小,请务必在 CSS 中同时定义 width 和 height。您还可以使用 aspect-ratio
属性来确保 iframe 在通过 CSS 调整大小时保持其形状。
iframe {
width: 100%;
height: auto;
aspect-ratio: 16 / 9;
}
现在在 Safari 16.4 中,一条灰线不再出现以标记延迟加载图像加载后将出现的位置。
Safari 16.4 还包括对 <input type="file">
的两项改进。现在在 macOS 上会显示所选文件的缩略图。并且支持 cancel
事件。
JavaScript 和 WebAssembly
Safari 16.4 为 JavaScript 和 WebAssembly 中的开发者带来了许多有用的新功能。
RegExp Lookbehind 使得编写正则表达式成为可能,这些正则表达式可以检查您的正则表达式匹配之前的内容。例如,匹配模式 (?<=foo)bar
仅在 bar
前面有 foo
时才匹配 bar
。它适用于正向和负向后瞻。
JavaScript Import Maps 为网页开发者提供了与其他模块系统相同的版本化文件映射,而无需构建步骤。
可增长的 SharedArrayBuffer
为增长现有通用原始二进制数据缓冲区提供了更有效的机制。而 可调整大小的 ArrayBuffer
允许在 JavaScript 中调整字节数组的大小。
在 WebAssembly 中,我们增加了对 128 位 SIMD 的支持。
Safari 16.4 还包括:
Array.fromAsync
Array#group
和Array#groupToMap
Atomics.waitAsync
import.meta.resolve()
Intl.DurationFormat
String#isWellFormed
和String#toWellFormed
- 类静态初始化块
WeakMap
和WeakSet
中的Symbols
Web API
Safari 16.4 增加了对许多新 Web API 的支持。我们优先考虑了您告诉我们最需要的功能。
离屏画布 (Offscreen Canvas)
在使用 Canvas 时,渲染、动画和用户交互通常发生在 Web 应用程序的主执行线程上。离屏画布提供了一个可以在屏幕外渲染的画布,将 DOM 和 Canvas API 解耦,从而使 <canvas>
元素不再完全依赖于 DOM。渲染现在也可以转移到工作器上下文,允许开发者在单独的线程中运行任务,并避免在主线程上进行可能对用户体验产生负面影响的繁重工作。DOM 独立操作和主线程渲染的结合可以为用户提供显著更好的体验,尤其是在低功耗设备上。在 Safari 16.4 中,我们增加了对离屏画布 2D 操作的支持。离屏画布中的 3D 支持正在开发中。
全屏 API
Safari 16.4 现在在 macOS 和 iPadOS 上支持更新且无前缀的 全屏 API。全屏 API 提供了一种方法来呈现 DOM 元素的内容,使其填满用户的整个屏幕,并在不再需要时退出全屏模式。用户可以通过各种机制控制退出全屏模式,包括按下键盘上的“Esc”键,或在触摸设备上执行向下滑动手势。这确保了用户始终能够随时退出全屏,从而保持他们对浏览体验的控制。
屏幕方向 API
除了全屏 API,我们在 Safari 16.4 中增加了对 屏幕方向 API 的初步支持,包括:
ScreenOrientation.prototype.type
返回屏幕的当前方向。ScreenOrientation.prototype.angle
返回屏幕的当前方向角度。ScreenOrientation.prototype.onchange
事件处理程序,每当屏幕方向改变时触发。
对 lock()
和 unlock()
方法的支持目前仍是实验性功能。如果您想尝试,可以在 iOS 和 iPadOS 16.4 的“设置”应用中通过“Safari”→“高级”→“实验性功能”→“屏幕方向 API (锁定/解锁)”启用它们。
屏幕唤醒锁定 API
屏幕唤醒锁定 API 提供了一种机制,可以防止设备变暗或锁定屏幕。此 API 对于任何需要屏幕长时间保持亮起以提供不间断用户体验的应用程序都很有用,例如烹饪网站,或用于显示二维码。
用户激活 API
用户激活 API 为网页开发者提供了一种检查用户是否与网页进行了有意义交互的方法。这很有用,因为某些 API 需要有意义的“用户激活”,例如点击或触摸,然后才能使用。由于用户激活基于计时器,因此 API 可用于检查文档当前是否具有用户激活,否则对 API 的调用将失败。阅读用户激活 API 了解更多详细信息和使用示例。
WebGL Canvas 广色域颜色
WebGL canvas 现在支持 display-p3
广色域。要了解有关色域支持的更多信息,请阅读改善网页颜色、CSS 中的广色域颜色与 Display-P3 和使用 HTML Canvas 的广色域 2D 图形。
压缩流 API
压缩流 API 允许在浏览器中直接压缩和解压缩数据流,减少了对第三方 JavaScript 压缩库的需求。如果您需要“gzip”数据流以发送到服务器或保存到用户设备上,这会很有用。
更多
Safari 16.4 还包括许多其他新的 Web API 功能,包括:
- 报告 API
- 专用工作器中的通知 API
- 专用工作器的权限 API
- Service Workers 和 Shared Workers 到权限 API
gamepad.vibrationActuator
- FormData 构造函数中的 submitter 参数
- COEP 违规报告
- COOP/COEP 导航违规报告
- Fetch Initiator
- Fetch 元数据请求头
- WebCrypto 中导入压缩的 EC 密钥
- 嵌套工作器加载脚本
autocomplete
属性的非自动填充凭据类型- 在同源上下文中撤销 Blob URL
- InputEvent 上的
isComposing
属性 - 嵌套工作器终止
ServerTiming
和PerformanceResourceTiming
中第一方的传输大小指标KeyframeEffect.iterationComposite
WEBGL_clip_cull_distance
图像、视频和音频
去年秋天,Safari 16 为 iOS 16、iPadOS 16 和 macOS Ventura 带来了 AVIF 图像支持。现在,借助 Safari 16.4,AVIF 也支持 macOS Monterey 和 macOS Big Sur。我们对 AVIF 实现的更新确保了动画图像和带有胶片颗粒(噪声合成)的图像现在得到完全支持,并且 AVIF 在 <picture>
元素内部工作。我们还更新了 AVIF 实现,使其在接受和显示不完全符合 AVIF 标准的图像时更加宽容。
Safari 16.4 增加了对 Web Codecs API 的视频部分的支持。这使网页开发者能够完全控制媒体的处理方式,通过提供对视频流单个帧的低级访问。这对于视频编辑、视频会议或其他视频实时处理的应用程序特别有用。
Safari 16.4 的新媒体功能还包括:
- 改进网页视频会议的音频质量
- 支持 AudioSession Web API 的子集
- 支持 AVCapture 虚拟相机
- 支持 inbound rtp
trackIdentifier
统计字段 - 支持基于 VTT 的扩展音频描述
- 支持允许网站提供在 AirPlay 期间使用的“替代”URL
WKWebView
WKPreferences
,由 iOS 和 iPadOS 16.4 上的 WKWebView
使用,增加了一个新的 shouldPrintBackgrounds
API,允许客户端选择在打印时包含页面的背景。
开发者工具
可检查的 WebKit 和 JavaScriptCore API
在所有支持 WKWebView
或 JSContext
的平台上,macOS 13.4 和 iOS、iPadOS 以及 tvOS 16.4 上提供了一个名为 isInspectable
(Objective-C 中为 inspectable
)的新属性。它默认为 false
,您可以将其设置为 true
以选择允许使用 Web Inspector 检查内容,即使在应用的发布版本中也是如此。

当应用启用了检查功能后,可以从 Safari 的“开发”菜单中,在当前电脑或已连接设备的子菜单中进行检查。对于 iOS 和 iPadOS,您还必须在“设置”应用中启用 Web Inspector,路径为Safari > 高级 > 网页检查器。
要了解更多信息,请阅读在应用中启用网页内容检查。
WebDriver
当使用 safaridriver
自动化 Safari 16.4 时,我们现在支持获取 shadow roots 内部元素的命令,以及获取元素计算角色和标签的可访问性命令。使用 safaridriver
添加 cookie 时,现在支持 SameSite
属性。对执行键盘操作也进行了改进,包括更好地支持按下修饰键以及支持输入由多个代码点表示的字符(包括表情符号)。这些改进使为您的网站编写跨浏览器测试变得更加容易。
网页检查器
排版工具
Safari 16.4 中的网页检查器在“元素”选项卡的“字体详细信息”侧边栏中增加了新的排版检查功能。

当渲染引擎必须为未提供合适样式的字体生成这些样式时,现在会显示合成粗体和斜体的警告。这可能表明已声明的 @font-face
的字体文件未加载。或者,可能是所用字体不支持 font-weight
或 font-style
的特定值。
可变字体是一种字体格式,其中包含如何从单个文件生成多种样式变体的说明,例如字重、字宽、倾斜、光学尺寸等。某些可变字体允许对其外观进行大量微调,例如笔画粗细、升部高度或降部深度,甚至特定字形的曲线或圆润度。这些特性表示为变体轴,每个轴都有由字体设计者定义的自定义值范围。

“字体详细信息”侧边栏现在提供了交互式控件,用于调整可变字体公开的变体轴的值,并在被检查的页面上实时查看结果,让您可以获得完全适合您的字体样式。
CSS 条件工具
“元素”选项卡中新的“用户偏好覆盖”弹出窗口下的控件允许您模拟媒体功能的状态,例如 prefers-reduced-motion
和 prefers-contrast
,以确保您创建的网页内容适应用户的需求。模拟 prefers-color-scheme
状态的切换按钮(以前是一个独立的按钮)已移至此新弹出窗口。


“元素”选项卡的“样式”面板现在允许编辑 @media
、@container
和 @supports
CSS 规则的条件文本。这允许您在上下文中进行调整并立即在被检查的页面上查看结果。这里有一个快速提示:将 @supports
的条件编辑为其反向,例如 @supports not (display: grid)
,以快速检查您对样式和布局的渐进增强方法。
HTML 元素徽章

“元素”选项卡 DOM 树中元素的新徽章加入了网格和弹性容器的现有徽章。新的“滚动”徽章标识可滚动元素,新的“事件”徽章在点击时提供对与元素关联的事件监听器的快速访问。一个新的“徽章”工具栏项使您可以轻松地只显示您感兴趣的徽章并隐藏其他徽章。
更多
Safari 16.4 中网页检查器的更改还包括:
- 元素选项卡:改进了布局侧边栏的视觉层次结构。
- 元素选项卡:增加了对页面上不可见的节点在 DOM 树中显示为暗淡的支持。
- 控制台选项卡:增加了对控制台代码段的支持。
- 源选项卡:增加了在“暂停原因”部分显示相关特殊断点。
- 源选项卡:增加了对内联断点的支持。
- 源选项卡:增加了对符号断点的支持
- 网络选项卡:增加了“路径”列。
- 网络选项卡:增加了标题的字母排序。
- 网络选项卡:增加了对每页网络限制的支持。
- 网络选项卡:增加了使用 Shift 键突出显示发起者或发起资源的功能。
- 图形选项卡:在 Canvas 检查器中增加了 OpenGL 对象 ID。
- 设置选项卡:增加了关闭对页面上不可见节点进行变暗的设置。
- 增加了对函数断点和追踪点的支持。
Safari 网页扩展
对声明式网络请求的增强
Safari 始终致力于改进对 declarativeNetRequest
的支持,这是网页扩展拦截和修改网络请求的声明性方式。在 Safari 16.4 中,API 增加了一些增强功能:
declarativeNetRequest.setExtensionActionOptions
API 可用于配置是否自动将操作计数(被阻止的加载数量等)显示为扩展的徽章文本。modifyHeaders
动作类型已添加,用于重写请求和响应头。此动作要求受影响域的网站权限和 manifest 中的declarativeNetRequestWithHostAccess
权限。redirect
动作类型现在要求 manifest 中包含declarativeNetRequestWithHostAccess
权限。MAX_NUMBER_OF_DYNAMIC_AND_SESSION_RULES
属性已添加,用于检查扩展可以添加的动态和会话规则的总最大数量。当前限制设置为 5,000 条规则。
这些增强功能为开发者提供了更多选择来定制其内容拦截扩展,并为用户提供更好的隐私保护。
网页扩展中的 SVG 图标支持
Safari 16.4 现在支持 SVG 图像作为扩展和操作图标,为开发者提供了更多创建高质量扩展的选项。此支持使 Safari 与 Firefox 保持一致,从而在不同平台之间提供一致的体验。能够为任何设备适当地缩放矢量图标意味着开发者不再需要多种尺寸,从而简化了创建精美专业外观扩展的过程。
动态内容脚本
Safari 16.4 引入了对新 scripting.registerContentScript
API 的支持,该 API 允许开发者创建可编程注册、更新或删除的动态内容脚本。此 API 增强了扩展清单中声明的静态内容脚本,为开发者提供了更大的灵活性来管理内容脚本,并使他们能够为其扩展创建更高级的功能。
切换阅读器模式
Safari 16.4 中新增了 tabs.toggleReaderMode
API,该 API 允许扩展为任何选项卡切换阅读器模式。此功能对于希望通过允许用户专注于他们想要阅读的内容来增强用户浏览体验的扩展尤其有用。通过使用此 API,开发者可以创建自动化启用文章阅读器模式的扩展,从而使用户更轻松、更方便地阅读在线内容。
会话存储
Safari 16.4 现在支持 storage.session
API,该 API 允许扩展在浏览器会话期间将数据存储在内存中,使其成为存储需要长时间计算或在非持久性后台页面加载之间快速所需数据的有用工具。此 API 对于存储敏感或安全相关数据(例如解密密钥或身份验证令牌)特别有用,这些数据不适合存储在本地存储中。会话存储区域不会持久化到磁盘,并在 Safari 退出时清除,为用户提供了增强的安全性和隐私性。
后台模块
开发者现在可以通过在清单的 background
部分设置 "type": "module"
来利用后台服务工作器和页面中的模块。这使得扩展代码更加有组织和可维护,从而更容易管理复杂的代码库。通过设置此选项,后台脚本将作为 ES 模块加载,从而可以使用 import 语句加载依赖项并使用最新的 JavaScript 语言功能。
Safari 内容拦截器
Safari 16.4 增加了对 Safari 内容拦截规则中 :has()
选择器的支持。这是 Safari 声明性内容拦截功能的一个强大新功能,因为它允许开发者选择和隐藏包含某些子元素的父元素。将其包含在 Safari 内容拦截规则中,为内容拦截开辟了全新的可能性。现在,开发者可以创建更细致和精确的规则,以定位网页的特定部分,从而更容易地拦截不需要的内容,同时保留用户的浏览体验。这再次体现了 Safari 致力于为其用户提供安全和私密的浏览体验,同时还为开发者提供创建创新和有效扩展所需的工具。
锁定模式的新限制
锁定模式是一种可选的极端保护,专为极少数由于身份或工作而可能成为最复杂数字威胁个人目标的人设计。大多数人从不会成为此类攻击的目标。
如果用户选择在 iOS 16.4、iPadOS 16.4 或 macOS Ventura 13.3 上启用锁定模式,Safari 现在将:
- 禁用 CSS 字体加载 API 中的二进制字体
- 禁用 Cache API
- 禁用 CacheStorage API
- 禁用 ServiceWorkers
- 禁用 SVG 字体
- 禁用 WebLocks API
- 禁用 WebSpeech API
更多改进
Safari 16.4 现在支持纯文本文件的深色模式。它支持 macOS 上的平滑键控滚动。并且增加了防止重定向到 data:
或 about:
URL 的功能。
错误修复
除了 135 项新功能外,Safari 16.4 的 WebKit 还包括大量用于完善现有功能的工作。我们已经收到您的反馈,您希望了解更多关于 Safari 每个版本中的许多修复。我们已尽力列出所有可能对开发者感兴趣的内容,在本例中为 280 项改进:
CSS
- 修复了
-webkit-mask-box-image: initial
以设置正确的初始值。 - 修复了
-webkit-radial-gradient
解析时意外地将几个强制逗号视为可选。 - 修复了
::placeholder
不支持writing-mode
、direction
或text-orientation
。 - 修复了
@supports
在not
、or
或and
后没有空格时不起作用的问题。 - 修复了
background-repeat
未通过内联样式正确暴露的问题。 - 修复了
baseline-shift
允许长度或百分比,但不允许数字。 - 修复了替换元素的
contain: inline-size
。 - 修复了
CSSPerspective.toMatrix()
在其长度与px
单位不兼容时抛出 TypeError。 - 修复了
cx
、cy
、x
和y
CSS 属性允许长度或百分比,但不允许数字。 - 修复了绝对定位图像上的
filter: blur
丢失overflow: hidden
的问题。 - 修复了
font-face
接受反向范围,并为计算样式反转它们。 - 修复了
font-style: oblique
必须允许等于 90deg 或 -90deg 的角度。 - 修复了带有
calc()
的font-style: oblique
允许超出范围的角度并将其限制为计算样式。 - 修复了
font-weight
最小值为 1。 - 修复了
font
简写拒绝font-style
的超出范围角度。 - 修复了
font
简写重置更多长写属性。 - 修复了
overflow-x: clip
导致同级图像未加载的问题。 - 修复了
overflow: clip
在 SVG 元素上不起作用的问题。 - 修复了
stroke-dasharray
解析以符合标准。 - 修复了
stroke-width
和stroke-dashoffset
解析以符合标准。 - 修复了
text-decoration-thickness
属性更改时未重绘的问题。 - 修复了允许将百分比和长度结合用于
line-height
的calc()
。 - 修复了使用
box-sizing: border-box
导致计算的宽高比创建负内容大小的问题。 - 修复了父元素上的等宽字体导致子元素使用无衬线字体和
rem
或rlh
单位时尺寸变大的问题。 - 修复了
cursor: auto
在链接上的行为。 - 修复了自动宽度和高度的按钮不设置固有边距。
- 修复了计算块大小以使用具有宽高比的正确盒模型。
- 修复了当表格单元格具有改变
writing-mode
的内联子元素时,单元格内容溢出。 - 修复了将
perspective
calc()
值裁剪为 0。 - 修复了字体简写不拒绝那些恰好包含 CSS 范围关键字作为字体系列名称中非第一个标识符的值。
- 修复了溢出内联内容的双击选择的命中测试。
- 修复了对于应用了
aspect-ratio
的<fieldset>
元素遵守内容块大小最小值。 - 修复了可编辑内容中带有制表符的不正确换行符位置。
- 修复了
:nth-child()
选择器列表中类名的无效。 - 修复了从指定样式(而不仅仅是计算样式)中省略
font
简写中line-height
的normal
值。 - 修复了伪元素不被视为 ASCII 不区分大小写。
- 修复了拒绝
:nth-of-type
或:nth-last-of-type
的选择器参数。 - 修复了
contain
的序列化顺序。 - 修复了当设置
word-break: keep-all
时,字符串不会在零宽度空格处换行。 - 修复了支持
<string>
作为无前缀的关键帧名称。 - 修复了
:has()
伪选择器解析的严格性。 - 修复了
font-face
src
描述符格式仅允许指定的格式,其他格式是解析错误。 - 修复了创建
matrix3d()
值时tz
组件未考虑缩放的问题。 - 修复了
stroke-dasharray
的计算值以px
为单位。 - 修复了当从根元素中删除
writing-mode
属性时,其效果未被移除。 - 修复了与
text-combine-upright
一起使用时text-shadow
的位置。 - 修复了带有无效类型的 style 元素的标题永远不会添加到首选样式表集。
- 修复了传输的最小/最大尺寸受宽高比的定义尺寸约束。
- 修复了用户代理样式表将隐藏元素、
abbr
、acronym
、marquee
和fieldset
与 HTML 规范对齐。 - 修复了
font-stretch
的计算值始终使用百分比,而不是关键字。 - 修复了
:nth-child
或:nth-last-child
中of
和选择器列表之间不需要空格。
CSS API
- 修复了
CSS.supports
对自定义属性返回 false。 - 修复了
CSS.supports
处理!important
时的空白。 - 修复了容错选择器不随
CSS.supports("selector(...)")
报告为支持。 - 修复了
getComputedStyle()
返回 transform 属性的函数列表。 - 修复了
linear-gradient
关键字值未转换为其rgb()
等效值用于getComputedStyle()
。
内容安全策略
- 修复了当新头部作为 304 响应的一部分发送时更新内容安全策略的问题。
表单
- 修复了
<input type="submit">
、<input type="reset">
和<input type="button">
遵守font-size
、padding
、height
,并支持多行值。 - 修复了选择具有相同名称的不同文件时
<input type="file">
触发change
事件的问题。 - 修复了阻止禁用
<fieldset>
元素获取焦点的问题。 - 修复了
:out-of-range
伪类匹配空的input[type=number]
。
JavaScript
- 修复了
Array.prototype.indexOf
常量折叠以处理非数字索引。 - 修复了
Intl.NumberFormat
useGrouping
处理以匹配更新的规范。 - 修复了
Intl.NumberFormat
忽略带有紧凑表示法的maximumFractionDigits
。 - 修复了
String.prototype.includes
在字符串为空且位置超出字符串末尾时错误地返回 false。 - 修复了
toLocaleLowerCase
和toLocaleUpperCase
在空字符串上抛出异常。
HTML
- 修复了
<body link vlink alink>
的解析以符合标准。 - 修复了
<legend>
接受比display: block
更多的display
属性值。
智能跟踪预防
- 修复了用户发起的跨域链接导航被计为顶级框架重定向的问题。
图像
- 修复了 HDR AVIF 图像的一些显示问题。
- 修复了 accept header 正确指示 AVIF 支持。
锁定模式
- 修复了由于自定义图标字体而导致的常见字形缺失情况。
媒体
- 修复了
enumerateDevices
即使页面正在捕获也可能返回过滤后的设备。 - 修复了
MediaRecorder.stop()
在MediaRecorder.pause()
之后触发额外的dataavailable
事件并带有字节。 - 修复了重复的
timeupdate
事件。 - 修复了将 DOMAudioSession 限制为具有麦克风访问权限的第三方 iframe。
- 修复了 MSE 在没有可搜索范围时无法搜索。
- 修复了如果麦克风被高优先级应用程序占用导致捕获失败时静音麦克风捕获。
- 修复了不允许在 HTMLMediaElement 上开始文本选择。
- 修复了仅需要 Web Audio 渲染的瞬时用户激活。
- 修复了如果窗口或屏幕选择时间过长,屏幕捕获会优雅失败。
- 修复了在 AirPlay 需要时切换到备用
<source>
元素。 - 修复了蓝牙
audioinput
断开连接后本地 WebRTC 视频元素暂停的问题。 - 修复了尝试在可用时对 WebRTC HEVC 编码器使用低延迟。
- 修复了取消静音 TikTok 视频会暂停它的问题。
- 修复了 WebVTT 样式未应用于带内轨道的问题。
渲染
- 确保负 letter-spacing 不会将内容拉出内联框外。
- 修复了使用 jQuery 的
.slideToggle()
时,带有border-radius
的<div>
未正确绘制。 - 修复了复合层上的
border-radius
裁剪。 - 修复了
box-shadow
在内联元素上正确绘制。 - 修复了内联框上的 box-shadow 失效。
- 修复了使用简化测量计算内联文本框宽度,以处理带有
Zero Width Joiner
、Zero Width Non-Joner
或Zero Width No-Break Space
的字体。 - 修复了动态添加到前一个兄弟元素的浮动清除问题。
- 修复了当源矩形在 Canvas 中位于源图像外部时裁剪源图像。
- 修复了 CSS 关键帧名称不允许 CSS 宽关键字。
- 修复了负边距的元素在适当情况下不避开浮动。
- 修复了浮动框与其边距框重叠。
- 修复了 HTMLImageElement 宽度和高度更新布局以返回样式尺寸而不是图像属性。
- 修复了当指定绝对宽度时,忽略
<td nowrap="nowrap">
上的nowrap
。 - 修复了当列和内容层之间存在图层时裁剪不正确的问题。
- 修复了绝对定位元素在相对定位容器内的不正确静态位置。
- 修复了相对于转换容器的固定定位元素的布局。
- 修复了布局溢出矩形溢出干扰滚动条的问题。
- 修复了负阴影重绘问题。
- 修复了阻止为匿名块延续绘制焦点环的问题。
- 修复了当对象流出时,在旧包含块链中重新计算固有宽度。
- 修复了极端
border-radius
值的渲染。 - 修复了色相小于 0 或大于 360 时的指定色相插值方法。
- 修复了从右到左编辑中的制表符处理。
- 修复了弹性盒和网格盒项目上的文本选择。
- 修复了下划线的位置和粗细与设备像素对齐。
- 修复了表格部分的转换。
- 修复了过渡省略号框从“在线上的显示框”到“线的附件”的转换。
- 修复了从右到左上下文中制表符的意外重叠选择。
- 修复了简化布局期间表格行的更新。
- 修复:改进了边框、填充和空块内容的平衡。
Safari 网页扩展
- 请求
unlimitedStorage
权限的扩展不再需要同时请求storage
。 - 修复了当扩展具有
declarativeNetRequestWithHostAccess
权限时,browser.declarativeNetRequest
命名空间现在可用。 - 修复了
isUrlFilterCaseSensitive
declarativeNetRequest
规则条件默认为false
。 - 修复了
tabs.onUpdated
在已关闭的选项卡上被调用的问题。 - 修复了后台服务工作器无法导入脚本的问题。
- 修复了扩展在导航后访问页面时内容脚本未注入子框架的问题。
- 修复了从后台服务工作器执行 fetch 请求时的 CORS 问题。
- 修复了
declarativeNetRequest
错误未在 Safari 设置的扩展窗格中正确显示的问题。 - 修复了网页检查器中扩展 cookie 存储的显示。现在显示扩展名称而不是 UUID。
- 修复了当扩展关闭然后打开时
declarativeNetRequest
规则未加载的问题。 - 修复了
getMatchedRules()
的结果以匹配其他浏览器。 - 修复了
browser.webNavigation
事件在扩展没有访问权限的主机上触发的问题。 - 移除了当有多个未分配键盘快捷键的命令时,
browser.commands
的键盘快捷键冲突警告。
滚动
- 修复了当页面太小无法滚动时,
overscroll-behavior: none
阻止过度滚动。
SVG
- 修复了
<svg:text>
不会自动换行。 - 修复了
preserveAspectRatio
停止接受defer
。 - 修复了
SVG.currentScale
仅为独立 SVG 设置页面缩放。 - 修复了
svgElement.setCurrentTime
将浮点数限制为有限值。 - 修复了通过 CSS 将
fill
与currentColor
更改应用于其他颜色。 - 修复了
filter
属性的更改被忽略的问题。 - 修复了 CSS 和 SVG 过滤器导致低质量、像素化图像。
- 修复了
<svg:a>
即使在启用 tab-to-links 时也具有焦点性。 - 修复了当
repeatDur
不是dur
的倍数时处理动画冻结。 - 修复了确保
baseline-shift
CSS 属性的计算值对长度使用px
单位。
表格
- 修复了在 quirks 模式下,不强制在表格单元格元素上设置
display: table-cell
、display: inline-table
、display: table
和float: none
。 - 修复了当表格边框属性被移除时,视觉边框也被移除。
文本
- 修复了
font-optical-sizing: auto
在 Safari 16 中没有效果。 - 修复了
<bdi>
和<input>
元素的方向性以与 HTML 规范对齐。 - 修复了处理无效的
dir
属性不会影响方向性。 - 修复了默认倾斜角度从
20deg
到14deg
。 - 修复了
<bdo>
的处理。 - 修复了
@font-palette-values
override-colors
应用的顺序。
Web Animations
- 修复了使用
inherit
值的@keyframes
规则在父样式更改时更新已解析值。 - 修复了
Animation.commitStyles()
即使样式未更改也触发突变。 - 修复了
Animation.startTime
和Animation.currentTime
setters 支持 CSSNumberish 值。 - 修复了
baseline-shift
动画。 - 修复了
baselineShift
继承更改。 - 修复了
commitStyles()
无法提交相对line-height
值的问题。 - 修复了
getKeyframes()
在onkeyframe
序列中 CSS 值的序列化。 - 修复了
rotate: x
和transform: rotate(x)
在 SVG 中产生相同的行为。 - 修复了
word-spacing
支持在百分比和固定值之间进行动画。 - 修复了非继承 CSS 变量在同一元素上的标准属性中进行插值的问题。
- 修复了与
"none"
混合时累积和限制滤镜值。 - 修复了
filter
属性的累加支持。 - 修复了
filter
属性的可加性支持。 - 修复了
iterationComposite
设置为累积时颜色列表自定义属性的动画。 - 修复了当 iterationComposite 设置为
accumulate
时混合变换。 - 修复了混合以考虑
iterationComposite
。 - 修复了计算简写属性的计算关键帧。
- 修复了复合动画计算中间关键帧的混合加性或累积关键帧。
- 修复了为离散值动画正确计算
keyTimes
索引。 - 修复了 CSS 动画在级联中的参与。
- 修复了自定义属性支持单个关键帧插值。
- 修复了包含
url()
的滤镜值应离散动画。 - 修复了插值自定义属性以考虑
iterationComposite
。 - 修复了动画旋转图像时抖动。
- 修复了如果自定义属性注册更改,关键帧将重新计算。
- 修复了如果使用的 CSS 变量更改,关键帧将重新计算。
- 修复了当
font-weight
属性上使用bolder
或lighter
时,关键帧将重新计算。 - 修复了当父元素更改设置为
inherit
的自定义属性的值时,关键帧将重新计算。 - 修复了当父元素更改设置为
inherit
的非继承属性的值时,关键帧将重新计算。 - 修复了当自定义属性上使用
currentcolor
值时,关键帧将重新计算。 - 修复了当使用
currentcolor
值时,关键帧将重新计算。 - 修复了不透明度使用
iterationComposite
的from
和to
关键帧的未限制值。 - 修复了在继承的 CSS 变量上运行过渡会反映在使用该变量作为值的标准属性上。
- 修复了无缝更新动画的播放速率。
- 修复了设置
iterationComposite
应使效果失效。 - 修复了将
transition-property
设置为none
不会解除 CSS 过渡与拥有元素的关联。 - 修复了 CSS 动画的隐式关键帧的复合操作返回
"replace"
。 - 修复了更新动画和发送事件的计时模型。
- 修复了更新计时以使效果失效。
Web API
- 修复了
-webkit-user-select: none
允许将文本复制到剪贴板。 - 修复了使用
:before
伪元素时contentEditable
光标左对齐而不是居中。 - 修复了
Cross-Origin-Embedder-Policy
在缓存命中时错误地阻止脚本。 - 修复了
CSSRule.type
不返回大于 15 的值。 - 修复了
document.open()
在文档导航时中止所有加载。 - 修复了
document.open()
移除文档最初的about:blank
状态。 - 修复了
Element.querySelectorAll
不遵守带有 ID 的元素范围。 - 修复了
FileSystemSyncAccessHandle
写操作受配额保护。 - 修复了
getBoundingClientRect()
对于垂直表格的<tr>
、<td>
及其后代返回错误的值。 - 修复了
HTMLOutputElement.htmlFor
以使其可设置。 - 修复了
queryCommandValue("stylewithcss")
始终返回空字符串。 - 修复了
StorageEvent.initStorageEvent()
以与 HTML 规范对齐。 - 修复了
textContent
将 dir=auto 内容留在错误的方向。 - 修复了
-webkit-user-select: initial
内容在-webkit-user-select: none
中应被复制。 - 修复了
WorkerGlobalScope.isSecureContext
基于所有者顶级 URL 而不是所有者 URL。 - 修复了一个错误,即帧中没有
mouseup
的mousedown
会阻止另一个帧中的点击事件。 - 修复了鼠标悬停退出后有时位置不正确的问题。
- 修复了接受
image/jpg
以实现兼容性。 - 修复了当在空文本节点之前插入时,添加非中断空格而不是普通空格。
- 修复了带有复选框的标签元素上嵌套点击事件的行为。
- 修复了在跨源 iframe 中托管时 SharedWorker 中的 BroadcastChannel。
- 修复了带有
dir="auto"
的文本表单控制元素的方向计算。 - 修复了 canvas 回退内容的可焦点性计算。
- 修复了删除按钮元素后,按钮样式保留在
contenteditable
元素中。 - 修复了断开连接的
<fieldset>
元素有时错误地匹配:valid
或:invalid
选择器。 - 修复了将鼠标拖动到
-webkit-user-select: none
节点上可以在另一个节点中开始选择。 - 修复了确保嵌套工作器在匹配服务工作器注册时受到控制。
- 修复了为
importScripts()
捕获和报告的错误。 - 修复了
innerHTML
和outerHTML
中 JavaScript URL 中的“&”转义。 - 修复了 EventSource 在解析重试延迟时停止允许尾随数据。
- 修复了 Fetch Request 对象保持其 Blob URL 存活。
- 修复了使用网页字体填充的 canvas 文本刷新或消失的问题。
- 修复了页面查找无法在 PDF 中显示结果。
- 修复了链接预加载同步失败时触发错误事件。
- 修复了表单提交取消 JavaScript URL 导航。
- 修复了处理 body 和 frameset 元素上的
onerror
内容属性。 - 修复了处理不透明源 Blob URL。
- 修复了处理文本文档以符合现代 HTML 规范。
- 修复了处理
<body>
和<frameset>
元素上的 onerror 内容属性。 - 修复了 HTMLTemplateElement 具有
shadowRootMode
属性。 - 修复了
document.styleSheets
中包含备用样式表。 - 修复了某些从右到左的
contenteditable
元素中不正确的光标移动。 - 修复了 canvas 中加载视频的不正确颜色。
- 修复了从
<template>
克隆的<img>
选择了不正确的srcset
候选。 - 修复了带有空值的
X-Frame-Options
HTTP 标头被错误地忽略。 - 修复了延迟加载图像有时不加载的问题。
- 修复了链接元素能够触发多个
load
或error
事件。 - 修复了从不透明的唯一来源加载带有片段的 Blob URL。
- 修复了在 303 HTTP 重定向上保持原始
Content-Type
标头。 - 修复了模块脚本始终使用 UTF-8 解码。
- 修复了 MouseEventInit 接受
movementX
和movementY
。 - 修复了使用 FileReader API 读取空文件或 blob 时不调度
progress
事件。 - 修复了将跨源 iframe 导航到相同 URL 时不替换当前历史记录项。
- 修复了覆盖 XHR 的 mimetype。
- 修复了 CORS 预取响应中负年龄值的解析。
- 修复了第一个换行符粘贴到文本区域的问题。
- 修复了阻止有序列表中生成计数器的选择。
- 修复了 Safari 尽管使用“从源重新加载页面”,但仍频繁使用过时缓存资源。
- 修复了调度到 Blob URL 的导航以保持 URL 存活直到导航发生。
- 修复了在存在现有会话时使用
setRequestHeader()
通过 XHR 发送基本身份验证。 - 修复了设置
style=""
以销毁元素的内联样式。 - 修复了设置不可聚焦 HTMLElement 的
tabIndex
。 - 修复了系统颜色不遵守继承的
color-scheme
值。 - 修复了在没有用户手势的情况下插入文本时文本区域占位符文本不消失。
- 修复了 F10 和 F11 键的
event.keyIdentifier
值。 - 修复了文本区域调整大小时点击事件未被抑制。
- 修复了带有
SkewY
的transform
属性的计算值。 - 修复了颜色属性的初始化。
- 修复了 ResizeObserver 和 IntersectionObserver 的计时以匹配其他浏览器。
- 修复了当 summary 元素接收到
click()
时切换 details 元素。 - 修复了更新选项元素的 Text 节点子元素不会重置 select 元素的选定。
- 修复了在 iOS 上使用 NFC 安全密钥。
- 修复了在 iCloud 钥匙串禁用时使用在 iOS 15 上注册的 WebAuthn 凭据。
- 修复了当请求为 Direct 时 WebAuthn 将 Attestation 发送为 None。
- 修复了 XHR 中止以符合标准规范。
- 修复了 XHR 错误事件的 loaded 和 total 返回 0。
- 修复:使所有 FileSystemSyncAccessHandle 方法同步。
- 修复:移除了
<input type="range">
上的precision="float"
属性。
WebGL
- 修复了视频纹理设置为重复。
网页检查器
- 修复了“检查元素”不突出显示元素的问题。
- 修复了捕获
queueMicrotask
的异步堆栈跟踪。 - 修复了时间轴中点击合并事件选择错误事件的问题。
- 修复了事件断点支持不区分大小写和正则表达式匹配。
- 修复了在“打开资源”对话框中文件过多时搜索缓慢的问题。
- 修复了在“元素”选项卡的“计算”面板中,带前缀的属性排在无前缀属性下方的问题。
- 修复了“元素”选项卡的“节点”面板中“属性”部分始终为空的问题。
- 修复了当样式表添加到页面时,“计算”选项卡滚动到顶部的问题。
- 修复了 URL 断点在设置触发加载的 HTML 属性时也会暂停。
WebDriver
- 修复了“获取元素矩形”不四舍五入为整数值的问题。
- 修复了导航期间自动化会话终止的问题。
- 修复了在 iPad 上禁用台前调度器时点击元素失败的问题。
- 修复了带有主体的 HTTP GET 请求失败的问题。
- 修复了 Shift 修饰键未应用于输入的文本。
反馈
我们很高兴收到您的来信。发送推文给 @webkit,分享您对 Safari 16.4 的看法。在 Mastodon 上找到我们:@jensimmons@front-end.social 和 @jondavis@mastodon.social。如果您遇到任何问题,欢迎您就 Safari UI 提供反馈,或就网页技术或网页检查器提交 WebKit 错误报告。提交问题确实有所帮助。
下载最新的 Safari 技术预览,以保持在网页平台的前沿并使用最新的网页检查器功能。您还可以阅读 Safari 16.4 发布说明。