Safari 18.0 中的 WebKit 功能

Safari 18.0 正式发布。今天,除了 iOS 18、iPadOS 18、macOS Sequoia 和 visionOS 2 之外,还有 53 项新的网页平台功能、25 项弃用和 209 个已解决的问题登陆驱动 Safari 的渲染引擎 WebKit。

Safari 18 新功能

干扰控制

干扰控制让您在使用 iOS 18、iPadOS 18 和 macOS Sequoia 上的 Safari 浏览网页时,可以隐藏分散注意力的内容,例如登录横幅、Cookie 偏好设置弹出窗口、新闻通讯订阅覆盖层等等。

通过轻点“页面菜单”,并选择“隐藏干扰项”来激活干扰控制。然后轻点您想要消失的元素,看着它逐渐淡出。您可以随时返回“页面菜单”,轻点“显示隐藏项”来轻松取消隐藏。

浏览器视图

每当您在一个具有突出视频元素的网页上时,您可以在“页面菜单”中点击“视频查看器”。视频将放大以填充整个窗口。如果您切换标签页、关闭窗口或用其他窗口遮挡网页,视频将进入画中画模式。

我们始终建议在创建网站时使用语义 HTML,包括 <video><main><article> 以及其他描述内容的元素。这样做有助于确保 Safari 阅读器和 Safari 视频查看器都能为您的网站用户提供最佳体验。

Safari windows on a Mac, with a video playing, big, in one window. The website is faintly visible behind the large video.

iPhone 镜像和远程检查

借助 macOS Sequoia 上的 iPhone 镜像功能,您可以在 Mac 上使用 iPhone。将其与 Safari 的远程检查功能结合,现在使用 Web Inspector 在 iOS 上测试和调试网站比以往任何时候都更容易。

首先确保您的 Mac 上已启用 Safari 的开发者工具(如果您在 Safari 中能看到“开发”菜单,则已完成此步骤),以进行远程检查设置。接下来,在您的 iPhone 上,前往“设置”>“应用”>“Safari 浏览器”>“高级”>“Web Inspector”启用 Web Inspector。然后,您需要使用数据线将设备连接到 Mac 以授予权限。连接后,您的设备将显示在 Safari 的“开发”菜单中。最后,要启用无线调试,请前往 macOS 上的 Safari >“开发”>“[您的设备]”>“通过网络连接”。

现在您可以随时使用 Web Inspector 无线调试在 iPhone 上运行的网站。借助 iPhone 镜像功能,您甚至无需拿出手机,一切都在 Mac 的屏幕上。

通过阅读《检查 iOS 和 iPadOS》或观看 WWDC 的《重新发现 Safari 开发者功能》,了解更多关于远程检查的信息。访问 apple.com 了解更多关于 iPhone 镜像功能1的信息。

Mac 版网页应用

去年,我们在 macOS Sonoma 中添加了对网页应用的支持。您可以将任何网站添加到 Dock 中——无论它是否使用 Manifest 文件、Service Worker 或其他技术构建以自定义网页应用体验。在 Safari 中访问该网站,然后前往“文件”>“添加到 Dock…”来自定义图标、更改名称,甚至调整 URL。然后,只需点击 Dock 中的网页应用图标,该网站就会作为独立应用打开。

今年为 Mac 上的网页应用带来了两项改进。

打开链接

macOS Sequoia 添加了直接在网页应用中打开链接的支持。现在,当用户点击链接时,如果该链接与网页应用的 scope 匹配,则该链接将在网页应用中打开,而不是在其默认网页浏览器中打开。例如,假设您已将 MDN Web Docs 添加到 Dock 中。然后,同事在“信息”、“邮件”、“Slack”、“Discord”、“IRC”或 Mac 上的任何非浏览器应用程序中向您发送一个 MDN 页面的链接。现在当您点击该链接时,它将在 MDN Web Docs 网页应用中打开,而不是在您的默认浏览器中打开。

在浏览器内点击链接将保持当前行为。此功能仅影响在其他地方打开的链接。(当用户在 Safari 中点击与已添加到 Dock 的网页应用的 scope 匹配的链接时,他们将看到一个“在网页应用中打开”的横幅,除非他们之前已关闭该横幅。)

默认情况下,当链接与用于创建网页应用的网页主机匹配时,此行为适用。作为开发者,您可以通过在网页应用清单中的 scope 成员定义应在网页应用中打开的 URL 范围来优化此体验。

扩展支持

现在用户可以通过 Safari 网页扩展和内容拦截器个性化 Mac 上的网页应用。导航到网页应用的“设置”菜单以访问所有已安装的内容拦截器和网页扩展。任何在 Safari 中启用的扩展在网页应用中都将默认开启。每个网页应用都可以独特地自定义,就像 Safari 配置文件一样。

CSS

视图过渡

WebKit 在 Safari 18 中添加了对 View Transitions API 的支持。它提供了一个优化的浏览器 API,用于将元素从一个状态动画到另一个状态。Safari 支持 CSS 视图过渡模块级别 1 规范,该规范增加了新的 CSS 属性和伪元素来定义过渡动画,以及一个新的浏览器 API 来启动过渡动画并响应不同的过渡状态。它通过捕获页面的当前(旧)状态并将动画过渡应用到新状态来工作。默认情况下,浏览器在状态之间应用交叉淡入淡出效果。

调用 document.startViewTransition() 方法启动捕获。您可以将回调函数作为第一个参数传递,以便在旧捕获和新捕获之间进行 DOM 状态更改。该方法返回一个 ViewTransition 对象,其中包含可用于跟踪视图过渡何时开始或结束的 Promise。

一旦捕获状态,就会构建一个伪元素树,可以用 CSS 定位它,从而允许您修改用于过渡的 CSS 动画。旧页面状态和新页面状态的动画可以通过 ::view-transition-new(*)::view-transition-old(*) 选择器进行修改。您还可以通过使用 CSS view-transition-name 属性命名特定元素,要求浏览器独立跟踪其状态更改。然后您可以使用伪元素来自定义其动画。

.page-view {
    view-transition-name: page-view;
}
::view-transition-old(page-view) {
    animation: 500ms ease-in-out transition-out-animation;
}
::view-transition-new(page-view) {
    animation: 500ms ease-in-out transition-in-animation;
}

当视图过渡运行时,:active-view-transition 伪类在根元素上变为活动状态。

以下示例演示了带标签导航的状态管理。每个标签视图都有一个自定义的过渡动画出场和略微不同的动画入场,而标签本身则依赖于默认页面过渡。

在此演示中查看视图过渡的实际效果。

样式查询

Safari 18.0 的 WebKit 添加了在测试 CSS 自定义属性时对样式查询的支持。与开发者使用 Sass 混合器的方式类似,样式查询可用于定义一组可重用样式,并以组的形式应用。

在这里,如果 --background 自定义属性设置为黑色,则将应用某些样式——在这种情况下,使标题和段落文本颜色变为白色。

@container style(--background: black) {
  h2, h3, p {
    color: white;
  }
}

不要忘记关注 HTML 结构。默认情况下,样式查询引用直接父元素上的样式。您可以通过使用容器查询名称来创建不同的引用。

相对颜色语法中的 currentcolor 和系统颜色关键词

Safari 16.4 中提供了对相对颜色语法的支持。它允许您以更动态的方式定义颜色,从现有颜色创建新颜色。例如,值 lch(from var(--color) calc(L / 2) C H) 使用 lch 颜色空间,获取变量 --color 并计算一个亮度减半的新颜色,即 calc(L / 2)

现在在 Safari 18.0 中(第一个提供支持的浏览器),您可以在定义新颜色时引用 currentcolor系统颜色关键词。例如,此代码将背景颜色设置为与文本颜色相同,但在 oklch 颜色空间中计算后,亮度增加 4 倍。

section { background: oklch(from currentcolor calc(L * 4) C H); }

在此演示中查看 `currentcolor` 如何与相对颜色语法一起使用。

能够引用系统颜色关键词开启了另一个选择世界。系统颜色就像变量,代表由操作系统、浏览器或用户建立的默认颜色——这些默认颜色会根据系统是设置为浅色模式、深色模式、高对比度模式等而变化。例如,canvas 表示 HTML 页面的当前默认背景颜色,而 fieldtext 匹配表单字段内文本的颜色。在 CSS 颜色级别 4 中找到完整的系统颜色列表。

相对颜色语法让您可以在 CSS 中定义颜色之间的动态连接,减少了在严格的设计系统中通过变量控制颜色的需求。通过观看 WWDC23 的《CSS 新功能》中的此部分,了解更多关于相对颜色语法的信息。

半透明强调色

accent-color 中的半透明颜色现在与 Canvas 系统颜色混合,以匹配最新的网页标准更新。这意味着,任何使用 alpha 通道定义颜色的多种方法,在用于为表单控件定义强调色时,都将按预期工作。

.form-control {
    accent-color: rgba(0,0,0,0.6);
}

动画显示

Safari 18.0 的 WebKit 添加了对 display 属性过渡动画的支持。

许多开发者很高兴能将 @starting-styletransition-behaviordisplay: none 插值结合使用。适用于Safari 17.4 的 WebKit 添加了对 transition-behavior 的通用支持,包括 transition-behavior: allow-discrete。适用于Safari 17.5 的 WebKit 添加了对 @starting-style 的支持,允许您为创建(或重新创建)元素时定义过渡的起始值。现在在适用于 Safari 18.0 的 WebKit 中,您可以将这些功能结合使用来过渡 display 属性。

背景滤镜

背景滤镜最初随 Safari 9.0 发布,它提供了一种将图形效果应用于特定元素背后内容的方式。例如,您可以将 backdrop-filter 应用于标题,标题后面的所有内容都将模糊,或饱和度降低,或对比度增加。SVG 中的任何滤镜函数都可以使用——blur()brightness()contrast()drop-shadow()grayscale()hue-rotate()invert()opacity()saturate()sepia()

多年来,背景滤镜仅在 Safari 中有效。当您使用 -webkit-backdrop-filter 前缀时,它才可用。现在,从 Safari 18.0 开始,您不再需要该前缀。我们还改进了实现,修复了错误并提高了互操作性。

在此演示中查看背景滤镜的可能效果。使用下拉菜单切换滤镜。

此演示展示了八种不同的滤镜以及您可以单独使用每种滤镜的效果。当然,您可以组合滤镜以创建更有趣的结果。背景滤镜自 2015 年在 Safari 中得到支持,2018 年在 Edge 中,2019 年在 Chrome 中,2020 年在 Samsung Internet 中,以及 2022 年在 Firefox 中得到支持,现在是考虑它所带来的图形设计可能性的绝佳时机。

内容可见性

Safari 18.0 的 WebKit 添加了对 content-visibility 的支持。此属性控制元素是否以有助于性能优化的方式渲染其内容。它允许您告知浏览器页面上的某些部分可能最初在屏幕外,并建议将其从布局和渲染中省略。这可以使页面加载更快。

更多

Safari 18.0 的 WebKit 添加了对 prefers-contrast 媒体查询的 custom 值解析支持。(它在 Apple 平台上不返回“true”,因为 iOS、iPadOS、macOS 或 visionOS 中没有强制颜色模式。)

空间网络

WebXR

visionOS 2 上的 Safari 18.0 添加了对 WebXR 沉浸式 VR 会话的支持。现在,您可以为使用 Apple Vision Pro 的用户创建完全沉浸式体验,并通过网络提供这些体验。WebXR 场景使用由 WebGL 驱动的硬件加速图形显示。

A beautiful garden rendered in created graphics. There's a tree with bright red leaves. A blue sky full of puffy white clouds. Bright green grass, with a path leading by plants and garden sculpture. It's a world created in WebXR.
试用《国际象棋花园》演示,查看 WebXR 的实际效果。

visionOS 2 的 Safari 支持新的 WebXR transient-pointer 输入模式。它让您充分利用 visionOS 上的自然输入,并允许您的用户通过注视和捏合进行交互。

We are in a rendered 3d environment, in a garden. We look at a chess board, with a real human hand lifting a rendered chess piece to make the next move in the game. A floating panel has two buttons reading "Leave garden" and "Reset game".
在您的 WebXR 体验中使用 transient-pointer 来支持诸如此类的交互,即玩家用手捏合和拖动以移动棋子。

如果您想动画化用户的 3D 手部模型,visionOS 2 的 Safari 还包括对 WebXR 手部追踪的支持。为确保隐私,在 WebXR 会话开始时会向用户请求允许手部追踪的权限。

通过观看 WWDC 的《使用 WebXR 构建沉浸式网页体验》,了解 visionOS 2 上 WebXR 的所有信息。通过阅读《在 Apple Vision Pro 中引入 WebXR 的自然输入》,了解更多关于 transient-pointer 输入模式的信息。并通过阅读《在空间网络中试用您的网站》,了解如何在 Mac 上使用 Safari 的开发者工具在 Apple Vision Pro 中进行检查和调试。

空间照片和全景图

在 Apple Vision Pro 上,您可以获得的一种令人惊叹的体验是查看空间照片和全景图。网页是与他人分享这些照片的好地方。

A family blows out candles on a birthday cake in a photo — that's floating in a frame in midair, in a living room. This is a still from the WWDC23 Keynote that introduced Apple Vision Pro. It's an example of how spatial photos work.

当您在 visionOS 中打开“照片”应用时,您会看到您的照片库。当您轻点一张图片时,它会独自出现在您面前的一个浮动框架中。空间照片以恰到好处的高度和视角出现,让您感觉仿佛回到了某个时刻。第二次轻点 UI 会将空间照片从其框架中打破,变得更加沉浸。同样,全景图在第一次轻点时会浮动在框架中。然后第二次轻点 UI 时,它会展开并环绕您,创造一个完全沉浸式的体验。

现在,在 visionOS 2 上的 Safari 18.0 中,您可以使用 JavaScript Fullscreen API 在网络上创建类似的体验。您可以将照片嵌入到网页中,并提供轻点功能。随着 Safari 窗口的消失,照片将弹入一个浮动框架中。然后,当用户轻点 visionOS 提供的空间照片或全景图 UI 时,照片将进一步展开,创造更具沉浸感的体验。当他们退出图片时,Safari 窗口将返回。

让我们来了解如何使用 Fullscreen API 在网页上支持空间照片或全景图的体验。首先,使用多年来使用的任何技术将图像包含在您的网页中。在这里,我们可以使用简单的 HTML 将一张展平的全景照片嵌入到网页中。

<img src="panorama.jpeg" class="go-fullscreen" alt="[description]">

然后使用 JavaScript,我们将在轻点时触发 .requestFullscreen()。也许像这样。

document.querySelectorAll('.go-fullscreen').forEach(element => {
    element.addEventListener('click', async () => {
        await element.requestFullscreen();
    });
});

当然,您可以为用户创建自己的轻点 UI,而不是将整个照片作为轻点目标。

空间图像的工作方式完全相同,尽管我们可能希望为不支持 HEIC 文件的浏览器提供备用方案。我们可以使用 picture 元素来实现这一点。

<picture>
    <source srcset="spatial.heic" type="image/heic">
    <source srcset="fallback.avif" type="image/avif">
    <img src="fallback.jpg" class="go-fullscreen" alt="write descriptive text here" >
</picture>

空间图像是立体图像,具有左右两个通道。在 Safari 中,当图像嵌入到网页中时,浏览器将显示左通道。而且无需担心为 macOS、iOS 或 iPadOS 上的 Safari 提供任何类型的备用方案——立体 HEIC 文件工作得很好。

这种技术也会导致支持 Fullscreen API 的任何浏览器中的图像进入全屏。通过观看 WWDC 的《优化空间网络》,了解更多关于将全景图和空间照片添加到您网站的信息。

visionOS 上交互区域的形状

作为一名网页开发者,您对网页上链接的样式设置非常熟悉。几十年来,您一直能够使用 CSS 为 :link:hover:active:visited 状态设置 text-decorationcolor 等样式。您还可以通过使用填充来调整不可见轻点目标的大小。

Apple Vision Pro 为链接的工作方式添加了一个新维度——在 visionOS 上,轻点目标是可见的。每当用户注视一个交互元素时,它都会被高亮显示,告知他们可以轻点。作为设计师或开发者,您可以有意地设计交互区域的外观。例如,您可能希望添加填充,甚至为原本不可见的框添加圆角。

现在在 visionOS 2 的 Safari 中,当您使用 CSS clip-path 更改链接可轻点区域的形状时,可见的交互区域也会随之改变形状。使用 SVG 和 cursor: pointer 构建的交互式 UI 元素也将以正确的形状高亮显示。通过观看 WWDC 的《优化空间网络》,了解更多信息。

visionOS 上的视频

visionOS 2 的 Safari 添加了将全屏视频停靠到当前“环境”的支持。用户在观看全屏视频时,可以随时轻点山形符号以进入沉浸式体验。转动数字表冠可调整沉浸感。

HTML

书写建议

在去年的 WWDC 上,Apple 发布了 iOS、iPadOS、macOS 等平台上的内联预测文本功能。它通过预测用户可能正在输入的内容,并在用户轻点空格键时完成单词、短语甚至整个句子,从而帮助用户更快地输入文本。现在,适用于 iOS、iPadOS、visionOS、macOS Sequoia 和 macOS Sonoma 的 Safari 18.0 WebKit 将内联预测文本带到了网络上。

虽然内联预测文本能带来绝佳的个性化用户体验,但在某些特定的网页情境中,可能最好不要有预测。适用于 iOS、iPadOS、visionOS、macOS Sequoia 和 macOS Sonoma 的 Safari 18.0 的 WebKit 为网页开发者提供了通过 writingsuggestions 属性禁用内联预测的机会。默认情况下,书写建议设置为 true。您可以通过在任何类型的文本输入字段中包含 writingsuggestions="false" 属性来关闭此功能。

在此演示中尝试有无书写建议的区别。请务必使用提供书写建议并支持 writingsuggestions 的浏览器和操作系统。

开关

适用于 iOS 18 的 Safari 的 WebKit 添加了对 <input type=checkbox switch> 的触觉反馈支持。这意味着,现在当用户在 iPhone 上轻点开关控件时,会感觉到一次轻点——就像在 iOS 的“设置”应用中切换开关的感觉一样。尝试此演示,看看它是怎样的。

日期和时间输入

适用于 macOS 的 Safari 18.0 的 WebKit 改进了日期和时间输入字段类型的辅助功能支持。现在,<input type="date"><input type="datetime-local"><input type="time"> 元素可以与 VoiceOver 正常配合使用。

ARIA

通常元素都带有其所需的标签,但有时特定按钮或 UI 没有文本标签。在这种情况下,可以使用 ARIA 来提供可访问的标签。aria-label 属性提供标签名称,而 aria-roledescription 提供元素角色的描述。

在极少数情况下,您可能需要覆盖 aria-labelaria-roledescription,以专门为盲文提供不同的名称或描述。aria-braillelabelaria-brailleroledescription 属性提供了这种能力。它们旨在解决非常具体的需要,包括网站需要渲染特定盲文点字表的教育场景。如果您确实使用了与盲文相关的 ARIA 属性,请务必使用盲文阅读器进行测试。如有疑问,依赖内容中的可访问名称或 aria-label / aria-roledescription 几乎总是更好的用户体验。WebKit 多年来一直支持这些 ARIA 属性。

现在,适用于 Safari 18.0 的 WebKit 添加了对 ariaBrailleLabelariaBrailleRoleDescription 元素反射属性的支持。这使得可以直接通过 JavaScript API 获取和设置 DOM 元素上的 aria-braillelabelaria-brailleroledescription ARIA 属性,而无需使用 setAttributegetAttribute

JavaScript

适用于 Safari 18.0 的 WebKit 添加了对 RegExp 中 Unicode 15.1.0 字符的支持。Unicode 15.1 增加了 627 个字符,使字符总数达到 149,813 个。现在,这些新字符可以在正则表达式中使用。

适用于 Safari 18.0 的 WebKit 还添加了对 RegExp.prototype[Symbol.matchAll]v 标志支持,提供了更强大的匹配 Unicode 字符的方法,符合 ECMAScript 2024 标准。

例如,您现在可以指定只匹配拉丁字符,同时避免匹配西里尔文字符。

const regex = /\p{sc=Latin}/v;
console.log(regex.test('A')); // true, 'A' is a Latin script character
console.log(regex.test('А')); // false, 'А' is a Cyrillic script character

或者根据表情符号匹配来分割字符串。

"a 🥰 b 🥰".split(/[\p{Emoji}--\p{ASCII}]/v)// ["a ", " b ", ""]

Web API

适用于 Safari 18.0 的 WebKit 添加了对 URL.parse() 的支持,这是一种解析 URL 的方法,在解析失败时返回 null 而不是抛出异常。

// Before
let url = null;
try {
  url = new URL(input, base);
} catch(e) { }

// Now
const url = URL.parse(input, base);

适用于 Safari 18.0 的 WebKit 通过为 <template> 元素添加 shadowRootDelegatesFocusshadowRootClonable IDL 属性,扩展了对声明式 Shadow tree 的支持。它还为 <template> 元素添加了 shadowRootSerializable 属性和 shadowRootSerializable IDL 属性,使使用声明式 Shadow roots 的用户可以选择将其序列化。序列化可以通过同时添加的新 getHTML() 方法完成。

适用于 Safari 18.0 的 WebKit 添加了对 PopStateEventhasUAVisualTransition 的支持,该属性指示用户代理是否为片段导航提供了视觉过渡。

适用于 Safari 18.0 的 WebKit 添加了对导入模块脚本中子资源完整性的支持,这为外部托管模块脚本内容的完整性提供了加密保证。

适用于 Safari 18.0 的 WebKit 添加了对 RequestResponseBlobPushMessageData 对象的 bytes() 方法的支持。这取代了网页开发者调用 arrayBuffer() 的需要,arrayBuffer() 使用起来可能很困难,并且会将结果包装在 Uint8Array 中。现在,当您需要访问这些对象所代表的数据的底层字节时,调用 bytes() 是推荐的方式。

适用于 Safari 18.0 的 WebKit 通过暴露 document.fragmentDirective 添加了对文本片段的特性检测支持。请注意,返回的对象(一个 FragmentDirective)不提供任何功能,但如果您需要知道浏览器是否支持片段指令,它会很有帮助。

Canvas

适用于 Safari 18.0 的 WebKit 添加了对 getContext() 方法的 willReadFrequently 上下文属性的支持。它指示是否计划进行大量回读操作。它强制使用软件加速 2D 或离屏 Canvas,而不是硬件加速。这可以在频繁调用 getImageData() 时提高性能。

适用于 Safari 18.0 的 WebKit 扩展了 2D Canvas 对 currentcolor 的支持。现在它可以在 color-mix() 或相对颜色语法中使用。在这里,currentcolor 将默认为 canvas 元素上计算出的 color 属性值。

托管媒体源

适用于 Safari 18.0 的 WebKit 添加了对托管媒体源 (MMS) 和媒体源扩展 (MSE) 的 Workers 支持。这在复杂的网站上特别有用,即使其他网站活动(例如实时评论)导致主线程非常繁忙,它也能确保视频连续流畅播放。您可以在此演示中看到性能差异。

WebRTC

适用于 Safari 18.0 的 WebKit 添加了对 WebRTC HEVC RFC 7789 RTP 负载格式的支持。以前,WebRTC HEVC 使用通用分包而不是 RFC 7789 分包。这种负载格式为改进视频会议、视频流媒体以及传输高比特率电影和电视节目提供了新的选择。

适用于 Safari 18.0 的 WebKit 添加了在专用 worker 中进行 MediaStreamTrack 处理的支持。它还添加了对缺失的 WebRTC 统计信息的支持。

HTTPS

适用于 Safari 18.0 的 WebKit 通过在混合内容设置中升级被动子资源请求,添加了对所有图像、视频和音频的安全 HTTPS 支持。这意味着,如果网站的某些文件使用 HTTPS 提供,而另一些文件使用 HTTP 提供(称为“混合内容”),现在所有图像和媒体将自动升级到 HTTPS,符合混合内容级别 2

WebGL

适用于 Safari 18.0 的 WebKit 添加了对六个新 WebGL 扩展的支持

  • EXT_texture_mirror_clamp_to_edge
  • WEBGL_render_shared_exponent
  • WEBGL_stencil_texturing
  • EXT_render_snorm
  • OES_sample_variables
  • OES_shader_multisample_interpolation

Web Inspector

适用于 Safari 18.0 的 WebKit 在 Web Inspector 的 CSS 源代码编辑器中添加了模糊搜索代码补全的支持。

密钥

两年前在 WWDC22 上,我们宣布支持密钥——一种突破性的行业标准登录网站和应用服务的方式。密钥为人们提供了极其简单的用户体验,同时显著提高了安全性。要了解更多信息,请观看《认识密钥》或阅读《支持密钥》

适用于 Safari 18.0 的 WebKit 添加了对三项新功能的支持,以持续改进密钥。首先,Safari 18.0 添加了对 Web 认证凭据创建中使用 mediation=conditional 的支持。这允许网站自动将现有基于密码的账户升级为使用密钥。通过观看 WWDC 的《使用密钥升级和凭据管理器简化登录》,了解更多信息。

其次,适用于 Safari 18.0 的 WebKit 添加了对在相关源之间使用密钥的支持。这允许网站在共享凭据后端的部分域中使用相同的密钥。

第三,适用于 Safari 18.0 的 WebKit 添加了对 WebAuthn prf 扩展的支持。它允许从密钥中检索对称密钥,用于用户数据加密。

Safari 扩展

Safari 18.0 还添加了对受管设备上扩展启用状态、无痕浏览状态和网站访问的移动设备管理支持。这意味着管理 iOS、iPadOS 或 macOS 设备的学校和企业现在可以在其管理中包含 Safari App 扩展、内容拦截器和网页扩展的配置。

Apple Pay

适用于 Safari 18.0 的 WebKit 添加了通过 Apple Pay 进行资金转账的支持。

弃用

虽然从网络中弃用旧技术的情况很少见,但在某些情况下这样做是合理的。我们一直在忙着删除从未标准化的 -webkit 前缀属性、从未在其他浏览器中支持的老旧媒体格式等。这有助于使浏览器引擎保持一致,提高互操作性,并通过减少网站依赖非网页标准的可能性来防止兼容性问题。

Canvas

适用于 Safari 18.0 的 WebKit 移除了对 OffscreenCanvasRenderingContext2Dcommit() 方法的支持。

CSS

适用于 Safari 18.0 的 WebKit 弃用了一系列不常用的 -webkit 前缀 CSS 伪类和属性——甚至还包括一个 -khtml 前缀属性。

  • -webkit-altalt 属性
  • :-webkit-animating-full-screen-transition 伪类
  • :-webkit-full-screen-ancestor 伪类
  • :-webkit-full-screen-controls-hidden 伪类
  • :-webkit-full-page-media 伪类
  • :-webkit-full-screen-document 伪类
  • :-khtml-drag 伪类

适用于 Safari 18.0 的 WebKit 还弃用了对 resize: auto 规则的支持。resize 属性的支持仍然保留,就像 Safari 4 以来一样。Safari 继续支持的值包括nonebothhorizontalverticalblockinline,以及全局值。CSS 基础用户界面模块级别 3 的早期版本定义了 auto,但后来它被从网络标准中移除。

适用于 Safari 18.0 的 WebKit 还弃用了 CSSRule 中非标准化的 WEBKIT_KEYFRAMES_RULEWEBKIT_KEYFRAME_RULE API 的支持。

图像

适用于 Safari 18.0 的 WebKit 移除了对 JPEG2000 图像格式的支持。Safari 是唯一提供过支持的浏览器。

如果您一直使用最佳实践提供 JPEG2000 文件,那么您的网站正在使用picture 元素为每个浏览器提供多种文件格式选项。Safari 18.0 将不再选择 JPEG2000,而是使用 JPEG XL、AVIF、WebP、HEIC、JPG/JPEG、PNG 或 Gif 压缩的文件——为每个用户选择最佳文件。当您使用 <picture> 时,只下载一张图像,并且浏览器会完成所有繁重的工作。

我们注意到一些内容分发网络 (CDN) 使用用户代理嗅探技术,为每个用户代理提供一个文件,只向 Safari 提供 JPEG2000 图像——尤其是在 iPhone 和 iPad 上。如果您预计您的网站可能出现这种情况,我们建议您在 macOS Sequoia 和 iOS 或 iPadOS 18 上的 Safari 18.0 中进行测试。如果您发现问题,请联系您的 SaaS 提供商或更改您的图像分发设置,以确保您的网站使用行业最佳实践提供备用图像。

如果您发现网站出现问题,请在 webcompat.com 提交问题。

JavaScript

适用于 Safari 18.0 的 WebKit 从全局对象中移除了 [[VarNames]],以反映网络标准的变化,这一变化现在允许此代码工作

<script>
eval('var x;')
</script>
<script>
let x;
</script>

媒体

适用于 Safari 18.0 的 WebKit 移除了对非标准 VTTRegion.prototype.track 的支持。

存储

适用于 Safari 18.0 的 WebKit 移除了对 AppCache 的最后一点支持。

AppCache 于 2009 年在 Safari 4 中首次出现时,作为一种用于离线缓存网页的工具,它曾备受期待。在 HTML 本身被进一步扩展以处理更多网页应用用例时,它被设想为“HTML5 应用缓存”。开发者可以创建一个简单的缓存清单文件,其中包含要缓存的文件列表。它的简单性看起来很优雅,但没有缓存清除机制,这使得网站开发和长期演进都相当令人沮丧。AppCache 也存在安全挑战。因此,创建了新的网页标准来取代它。如今,开发者使用 Service Workers 和 Cache Storage 来代替。

WebKit 在 Safari 11.0 中通过控制台警告弃用了 AppCache。然后在 2021 年,我们从 Safari 15.0 中移除了对 AppCache 的支持,但为 WKWebView 的第三方用户保留了一些例外。现在我们正在移除这些例外。WebKit 的这一更改只会影响在旧的第三方应用程序中加载的极少数网页内容,这些内容包含依赖 AppCache 相关接口存在的 JavaScript 代码。

SVG

适用于 Safari 18.0 的 WebKit 移除了 SVGAnimateColorElement 接口,以及 SVGGraphicsElement 中非标准的 getTransformToElement

Web API

适用于 Safari 18.0 的 WebKit 移除了对四个非标准 Web API 的支持

  • KeyboardEvent.altGraphKey
  • WebCrypto 中的 AES-CFB 支持
  • KeyboardEvent.prototype.keyLocation
  • HashChangeEvent 的非标准 initHashChangeEvent() 方法

WebView

弃用了一些旧版 WebKit 通知名称,包括

  • WebViewDidBeginEditingNotification
  • WebViewDidChangeNotification
  • WebViewDidEndEditingNotification
  • WebViewDidChangeTypingStyleNotification
  • WebViewDidChangeSelectionNotification

错误修复及更多

除了所有新功能之外,适用于 Safari 18.0 的 WebKit 还包含了对现有功能进行完善的工作。

辅助功能

  • 修复了 <main> 和分段元素内 <header> 的角色分配问题。
  • 修复了通过辅助功能 API 递增或递减时,范围输入不触发 input 事件的问题。
  • 修复了在插槽上设置 aria-hidden 不隐藏插槽分配节点的问题。
  • 修复了 VoiceOver 读取隐藏关联标签的问题。
  • 修复了组合框正确公开其链接对象的问题。
  • 修复了 macOS 上 VoiceOver 对 aria-activedescendant 的支持问题。
  • 通过为子字段添加标签修复了时间输入的辅助功能问题。
  • 修复了 <body><html> 元素上 aria-hidden=true 被忽略的问题。
  • 修复了 datetime 值以错误时区暴露给辅助技术的问题。
  • 修复了 datetime-local 输入的错误 datetime 值暴露给辅助技术的问题。
  • 修复了 CSS content 属性替换文本为空字符串时被忽略的问题。
  • 修复了以下元素的计算角色:dddetailsdtemhgroupoptionsstrong
  • 修复了 aria-labelledby 定位的隐藏元素显示其整个子树文本,而不仅仅是其直接子文本的问题。
  • 修复了在 visibility: hidden 容器内,visibility: visible 元素的无障碍名称计算问题。
  • 修复了表格标题动态更改时,更新表格辅助功能文本的问题。
  • 修复了目标元素子树更改后,更新 aria-describedby 文本的问题。

动画

  • 修复了 transition 属性以生成最短序列化。
  • 修复了 animation 属性以生成最短序列化。

Apple Pay

  • 修复了行项目总金额的任意 8 位数字限制。

认证

  • 修复了条件 UI 请求中止后,navigator.credentials.create() 以“NotAllowedError: Operation Failed”拒绝的问题。
  • 修复了取消完成后设置取消标志的问题,无论后续请求是否发生。

Canvas

  • 修复了 drawImage(detachedOffscreenCanvas) 抛出异常的问题。
  • 修复了 OffscreenCanvas 在嵌套 workers 中无法渲染到占位符的问题。
  • 修复了切换标签页时,OffscreenCanvas 占位符 canvas 内容层丢失的问题。
  • 修复了 drawImage 不更改输入源或目标矩形的问题。
  • 修复了切换 canvas 父元素可见性时,取消 clearRect() 效果的问题。
  • 修复了 Canvas drawImage() API 在图像处于损坏状态时抛出异常的问题。
  • 修复了分离的 OffscreenCanvas 不传输 ImageBuffer 的问题。

Cookie

  • 修复了将缺乏明确“SameSite”属性视为“SameSite=Lax”的问题。

CSS

  • 修复了在空白或新行上动态将 white-space 设置为非默认值的问题。
  • 修复了自定义计数器样式 disclosure-opendisclosure-closed 在从右到左方向上指向正确方向的问题。
  • 修复了 backface-visibility 创建堆叠上下文和包含块的问题。
  • 修复了 getComputedStyle()::highlight() 等功能性伪元素配合使用的问题。
  • 修复:将 :-webkit-full-screen 伪类别名为 :fullscreen
  • 修复:将 :-webkit-any-link 别名为 :any-link,将 :matches() 别名为 :is()
  • 修复了 getComputedStyle() 伪元素解析以支持完整的 CSS 语法范围的问题。
  • 修复了 @supports 正确处理一些被错误视为不支持的 -webkit 前缀伪元素的支持问题。
  • 修复了样式更改后更新对媒体查询敏感的 meta 标签的问题。
  • 修复了更改颜色方案以使用系统颜色或 light-dark() 更新渐变的问题。
  • 修复了将 font-variant-caps: all-small-capsfont-synthesis 一起使用时内联元素大小不正确的问题。
  • 修复了 :empty 选择器与动画配合使用的问题。
  • 修复了序列化自定义属性时保留空白的问题。
  • 修复了非继承自定义属性变异时样式更新不正确的问题。
  • 修复了父元素移除的元素最终丢失最后记住的大小的问题。
  • 修复了自定义属性隐式和显式初始值之间不正确的差异。
  • 修复了 Menu 和 MenuText 系统颜色的对比度问题。
  • 修复了在序列化和计算值中保持 CSS gap 简写值不变的问题。
  • 修复了 @starting-style 的样式调整器错误地使用空元素调用的问题。
  • 修复了排除 -apple-pay-button 适用于任何支持 appearance: auto 且不是按钮的元素的问题。
  • 修复了 CSS 颜色规范中添加的颜色解释方法缺失的问题。
  • 修复了 hsl()hsla() 实现以匹配最新规范更改的问题。
  • 修复了 rgb()rgba() 的实现以匹配最新规范的问题。
  • 修复了 hwb() 实现以匹配最新规范的问题。
  • 修复了其余颜色类型以与最新规范更改同步的问题。
  • 修复了在颜色插值时模拟组件向前传播的问题。
  • 修复了为 mask-mode 应用填充图层模式的问题。
  • 修复了 backdrop-filter: blur 在页面加载时不存在的元素上渲染的问题。
  • 修复:提高了大型 Grid 的性能。
  • 修复了一些 CSS 属性导致引号被重置的问题。

编辑

  • 修复了输入法编辑偶尔会丢失组合范围的问题。
  • 修复了聚焦空文本字段后开始听写时,听写 UI 不再显示的问题。(FB14277296)

表单

  • 修复了显示的 datalist 下拉菜单在 DOM 更新后同步其 options 元素的问题。
  • 修复了输入元素使用 [value] 作为第一步回退基础的问题。
  • 修复了 <select multiple> 滚动条匹配所用颜色方案的问题。
  • 修复了从 <datalist> 元素中选择 <option> 时更新输入值的问题。(FB13688998)
  • 修复了带有 type="email"multiple 属性的 input 元素中不显示 value 属性的问题。
  • 修复了 <input type=checkbox switch> 的 iOS 动画问题。
  • 修复了窗口不活动时表单控件以活动外观绘制的问题。
  • 修复了构造的 FormData 对象默认不包含图像按钮提交者条目的问题。

历史记录

  • 修复了当 History 的属性不在完全活动的 Document 中时抛出 SecurityError 的问题。

HTML

  • 修复了“about:blank” document.referrer 初始化的问题。
  • 修复了自闭合 SVG script 元素的解析问题。现在它能成功执行。

JavaScript

  • 修复了 RegExp.prototype.@@split 更新以下旧版 RegExp 静态属性的问题:RegExp.inputRegExp.lastMatchRegExp.lastParenRegExp.leftContextRegExp.rightContext,以及 RegExp.$1, ... RegExp.$9
  • 修复了当模式是 RegExp 对象且 lastIndex 不是数字时,String.prototype.replace 不采用快速路径的问题。
  • 修复了 Async / Await、生成器、异步函数和异步生成器的规范兼容性问题。
  • 修复了异步函数和生成器正确处理带有抛出“constructor”getter 的 Promise 的问题。
  • 修复了异步生成器中的 return 正确 await 其值的问题。
  • 修复了 Symbol.species getter 不共享单个 JS 函数的问题。
  • 修复了在 size 属性为负值的对象上调用 Set 方法时抛出 RangeError 的问题。
  • 修复了来自另一个领域的 eval() 函数不会导致直接 eval 调用的问题。
  • 修复了带有 ...spread 语法的 eval() 调用成为直接调用的问题。
  • 修复了 try/catch 不截获派生类 [[Construct]] 中发生的错误的问题。
  • 修复了若干问题
    • 剩余参数内默认值表达式中的直接 eval() 在函数环境中创建变量,而不是在参数的独立环境中创建;
    • eval() 中或在先前参数的默认值表达式中创建的闭包中,访问在剩余参数内定义的绑定时会抛出 ReferenceError,但前提是存在同名的 var 绑定;
    • 在剩余参数内默认值表达式中创建的闭包,其创建的 VariableEnvironment 与先前参数中的对应部分不同,这导致在查询或修改被 var 绑定“遮蔽”的参数名称时会查询到不正确的环境。
  • 修复了 TypedArray 排序方法对比较器返回 false 的特殊处理。
  • 修复了 setExpectionPorts 中按位与的编程风格。
  • 修复了 emitReturn() 在 TDZ 检查之前从箭头函数词法环境中加载 this 值的问题。
  • 修复了 NFKC 规范化以与 Latin-1 字符配合使用的问题。
  • 修复了带有 Unicode 起始字符的私有名称解析问题。
  • 修复了当 LHS 为原始值时,instanceof 不获取 RHS 原型的问题。
  • 修复了括号更新表达式最多解析一次属性键的问题。
  • 修复了括号复合赋值最多解析一次属性键的问题。
  • 修复了 Object.groupByMap.groupBy 对非对象有效的问题。
  • 修复了 Array.fromAsync 不调用 Array 构造函数两次的问题。
  • 修复了访问器属性的 Function.prototype.toString 输出不一致的问题。
  • 修复了 Set#symmetricDifference 在每次迭代中都调用 this.has 的问题。
  • 修复了当赋值的左侧是函数调用时,逻辑赋值表达式会抛出语法错误的问题。
  • 修复了 RegEx 中嵌套重复命名捕获组时抛出语法错误的问题。
  • 修复了 ArrayBufferSharedArrayBuffer 构造函数在创建实例之前检查长度的问题。
  • 修复了 Intl 实现,以确保根据规范更新将“GMT”规范化为“UTC”。
  • 修复了 RegEx 后向断言与 v8 不同的问题。
  • 修复了 Intl.DurationFormatfractionalDigits 在省略时被视为最多 9 位数字的问题。
  • 修复了优化后的 TypedArrays 给出不正确结果的问题。
  • 修复了 Intl.DurationFormatnumeric2-digit 问题。

加载

  • 修复了当 Cookie 被阻止时 navigator.cookieEnabled 返回 false 的问题。

媒体

  • 修复了当提供 sizes 元数据属性时,MediaSession 确定要使用的最佳尺寸 artwork 的问题。(FB9409169)
  • 修复了在 visionOS 的标签栏中切换标签页后,视频声音来自另一个窗口的问题。
  • 修复了某些网站上 MSE 视频的播放问题。
  • 修复了允许视频的 currentTime 超过间隔开始时间的问题。
  • 修复了带有 Vorbis 音轨的 WebM 文件音频播放损坏的问题。
  • 修复了在有效的 AudioEncoderConfig 中,sampleRatenumberOfChannels 为必需且非零的问题。
  • 修复了媒体元素重复附加相同媒体段的问题。
  • 修复了 visionOS 中 Safari 音频可能从错误窗口发出的问题。
  • 修复了如果“小时”使用 1 位数字定义,则拒绝有效 NPT 字符串的问题。
  • 修复了在查看器中隐藏 <video> 元素时的画中画问题。
  • 修复了视频在画中画中暂停和播放后,返回按钮不起作用的问题。

网络

  • 修复了在可能出现混合安全上下文的情况下,将不活动或被动子资源请求和获取升级以符合标准的问题。
  • 修复了嵌套文档导航时 Sec-Fetch-Site 值不正确的问题。
  • 修复了加载带有非持久数据存储的 WebArchives 的问题。
  • 修复了 Timing-Allow-Origin 不适用于 HTTP 302 响应的问题。

PDF

  • 修复了带有打印操作实现的打印按钮问题。
  • 修复了名称中带有空格的 PDF 在“预览”中打开的问题。
  • 修复了“用预览打开”上下文菜单项对锁定 PDF 文档不起作用的问题。

渲染

  • 修复了某些字符的希腊语大写转换失败问题。
  • 修复了带有 1rem 填充的 <textarea> 元素调整大小的问题。
  • 修复了颜色矩阵滤镜的颜色正确性问题。
  • 修复了 backdrop-filter 应用于带有 border-radius 元素的边框区域的问题。
  • 修复了固有内联尺寸计算器考虑空子元素之前带有非零边距的空白问题。
  • 修复了嵌套内容应用 height: 100% 时,弹性盒子元素重叠的问题。
  • 修复了流外兄弟元素导致网格项定位不正确的问题。
  • 修复了带有浮动的 break-word 丢弃文本的问题。
  • 修复了未样式化的 only-child 内联元素的 min-content 计算问题。
  • 修复了当使用 position: relativetop 时省略号多次渲染的问题。
  • 修复了连续块中内联元素倒序插入的错误。
  • 修复了调整窗口大小时,页脚处页面背景颜色条闪烁的问题。
  • 修复了当多个已安装字体具有相同名称时,通过错误字体字形 ID 进行字形查找导致粗体文本乱码的问题。(FB13909556)
  • 修复了在 vertical-rl 书写模式表中选择带有 ruby 注释的日文文本的问题。
  • 修复了 MathML 中 mfracmspace 元素的边框、填充和边距支持问题。

滚动

  • 修复了在某些页面上,内容在其下方滚动时,光标不更新的问题。

安全

  • 修复了从 URL 中剥离文本滚动片段以防止将片段暴露给页面的问题。
  • 修复了使用 0.0.0.0 主机和“no-cors”模式在私有 localhost 域上绕过 CORS 的问题。
  • 修复了 iframe 中阻止跨源重定向下载的问题。
  • 修复了被阻止的跨源重定向下载改为尝试渲染页面的问题。

SVG

  • 修复了 SVG 解析器将“换页符”解释为空白字符的问题。
  • 修复了无效滤镜原始引用错误处理问题。
  • 修复了在 <switch> 元素内显示 SVG 元素的问题。
  • 修复了 SVG 标题默认 UA 样式规则为 display: none 的问题。
  • 修复了 SVG 中链接的 UA 样式表应用符合标准的 cursor: pointer 的问题。
  • 修复了如果 SVG 渐变 stop-color 未在页面中渲染,则返回其初始值的问题。
  • 修复了如果标记路径包含子路径,则 SVG 标记段计算的问题。
  • 修复了 SVGLength 与 WebIDL 规范同步的问题。

文本

  • 修复了披露计数器样式考虑 writing-mode 的问题。

Web 动画

  • 修复了 widthheight 动画时百分比变换动画的问题。
  • 修复了当 transform 属性以隐式关键帧动画时,更改其值时更新动画的问题。
  • 修复了 display 过渡到 none 的问题。

Web API

  • 修复了 cssText setter 在序列化不同时更改 style 属性的问题。(FB5535475)
  • 修复了 history.pushState()history.replaceState() 忽略 title 参数的问题。
  • 修复了 URL 文本片段指令未从 JavaScript 中完全剥离的问题。
  • 修复了 showPicker() 方法触发 datalist 建议的问题。
  • 修复了无命名空间中的 lang 属性仅适用于 HTML 和 SVG 元素的问题。
  • 修复了不必要地取消设置 iframe 全屏标志的问题。
  • 修复了 DOM Range 正确考虑 CDATASection 节点的问题。
  • 修复了 getGamepads() 不再触发不安全上下文警告的问题。
  • 修复了插入 <picture> 元素显示同一图像两次的问题。
  • 修复了在分离状态下导航方法中抛出异常的问题。
  • 修复了 URL 主机设置器中的一个小问题。
  • 修复了根据 DOM 标准澄清后 ShadowRoot 节点克隆的问题。
  • 修复了 GeolocationCoordinates 暴露 toJSON() 方法的问题。
  • 修复了 IntersectionObserver 通知有时无法触发的问题。
  • 修复了 GeolocationPosition 暴露 toJSON() 方法的问题。
  • 修复了分派事件时设置 CustomEvent.target 的问题。
  • 修复了 iOS 17.4 中 navigator.language 仅返回系统语言的问题。
  • 修复:从 <hr>width 属性中移除了表示性提示。
  • 修复了将书写建议插入可编辑的 display: grid 容器时的问题。
  • 修复了 window.styleMedia 的警告信息。

网页应用

  • 修复了所有网页应用的 Associated Domains 的 www. 子域名解析问题。

WebAssembly

  • 修复了可移植引用类型全局变量的初始化问题。

网页扩展

  • 修复了从存储获取空键的问题。(FB11427769)
  • 修复了 Service Workers 未出现在“开发”菜单或远程 Web Inspector 菜单中的问题。(130712941)
  • 修复了网页扩展由于解析 declarativeNetRequest 规则的问题而无法启动的问题。(FB14145801)

Web Inspector

  • 修复了“审核”标签页中的字体大小问题。
  • 修复了“存储”展开部分不会折叠的问题。
  • 修复了 Web Inspector 显示嵌套 workers 的问题。
  • 修复了使用交互式编辑控件时,标记为 !important 的 CSS 字体属性值未被覆盖的问题。
  • 修复了 Web Inspector 视口可能显示被截断的问题。
  • 修复了“审核”标签页中的运行时对齐问题。
  • 修复了“控制台”标签页中记住消息类型选择的问题。
  • 修复了 text-indent 属性的自动补全建议前缀属性而不是 each-linehanging 的问题。
  • 修复了 background 自动补全建议包含 repeating-conic-gradient 的问题。
  • 修复了重新加载 Web Inspector 时,“源”标签页中的断点列表消失的问题。
  • 修复了 Web Inspector 重新打开时控制台意外清空的问题。
  • 修复了控制台代码补全不区分大小写的问题。
  • 修复了从 DOM 树中高亮显示元素时,overflow: scroll 元素按预期滚动的问题。
  • 修复了在“开发”菜单中显示来自 iOS 设备的额外 Safari 标签页的问题。
  • 修复了控制台和代码编辑器补全不会自动将建议滚动到视图中的问题。
  • 修复了 DOM 树视图中的搜索意外改变文本显示的问题。
  • 修复了禁用“显示独立样式侧边栏”时,点击计算 CSS 的“跳转”箭头的问题。
  • 修复了 visionOS 模拟器中 Safari 的可检查标签页未出现在主机 macOS 的“开发者”菜单中的问题。
  • 修复了开关控件的辅助功能检查器报告“State: on/off”而不是“Checked: true/false”的问题。

WebView

  • 修复了 WKWebView 中的 Gamepad API 问题。
  • 修复了旧版 WebView 中 HTML 元素宽度或高度改变时重绘的问题。

WebDriver

  • 修复了检索包含多字节字符的标题的问题。

WebRTC

  • 修复了 RTCEncodedVideoFrame 和 RTCEncodedAudioFrame 与 WebIDL 规范匹配的问题。
  • 修复了当 VideoTrackGenerator 及其所有克隆轨道停止时,写入器关闭的问题。
  • 修复了 iPhone 15 Pro 上 WebRTC AV1 硬件解码的问题。
  • 修复了屏幕共享窗口出现的黑色条纹问题。
  • 修复了使用 getDisplayMedia 捕获的窗口调整大小时出现的黑色条纹问题。

更新到 Safari 18.0

Safari 18.0 适用于 iOS 18iPadOS 18macOS Sequoia、macOS Sonoma、macOS Ventura 和 visionOS 2

如果您正在运行 macOS Sonoma 或 macOS Ventura,您可以单独更新 Safari,而无需更新 macOS。请前往  > 系统设置 > 通用 > 软件更新,然后点击“可用更新”下的“更多信息…”。

若要在 iPhone、iPad 或 Apple Vision Pro 上获取最新版本的 Safari,请前往“设置”>“通用”>“软件更新”,然后轻点以更新。

反馈

我们很高兴收到您的来信。要分享您对 Safari 18.0 的看法,请在 Mastodon 上找到我们:@jensimmons@front-end.social@jondavis@mastodon.social。或者在 X 上发送回复给 @webkit。您也可以在 LinkedIn 上关注 WebKit。如果您遇到任何问题,欢迎您就 Safari UI 提供反馈(了解更多关于提交反馈的信息),或提交关于网页技术或 Web Inspector 的WebKit 错误报告。如果您发现某个网站在 Safari 中出现问题,但在其他浏览器中正常,请在 webcompat.com 提交报告。提交问题确实会带来改变。

在 macOS 上下载最新的 Safari 技术预览版,以保持在网页平台的前沿,并使用最新的 Web Inspector 功能。

您还可以在Safari 18.0 发行说明中找到此信息。

1. iPhone 镜像功能适用于配备 Apple 芯片的 Mac 电脑和配备 T2 安全芯片的基于 Intel 的 Mac 电脑。要求您的 iPhone 和 Mac 使用相同且已启用双重认证的 Apple ID 登录,iPhone 和 Mac 彼此靠近且已开启蓝牙和 Wi-Fi,并且您的 Mac 未在使用 AirPlay 或随航。iPhone 镜像功能并非在所有地区都可用。