发布时间:2025 年 3 月 5 日
除非另有说明,否则以下变更适用于适用于 Android、ChromeOS、Linux、macOS 和 Windows 的最新 Chrome Beta 版分支。如需详细了解此处列出的功能,请点击所提供的链接或访问 ChromeStatus.com 上的列表。Chrome 135 自 2025 年 3 月 5 日起处于 Beta 版阶段。您可以在桌面版 Google.com 或 Android 版 Google Play 商店下载最新版本。
CSS 和界面
此版本新增了 13 项 CSS 和界面功能。
锚点定位会记住滚动偏移量
添加了对记忆的滚动偏移量概念的支持。当定位元素具有默认锚点,并且一侧固定到此锚点,另一侧固定到原始容器块时,在调整元素大小时,系统会考虑滚动偏移量。这意味着,当文档在给定滚动偏移量处滚动时,您可以使用锚定元素的所有可见空间(使用 position-area
)。为了避免每次滚动文档时都重新布局(调整元素大小),浏览器会使用记住的滚动偏移量,而不是始终使用当前滚动偏移量。系统会在锚点重新计算点更新记忆的滚动偏移量,该点是指定位元素最初显示的位置,或者是选择其他定位选项 (position-try-fallbacks
) 时的位置。
CSS 惰性
将元素设为不可交互会影响其能否获得焦点、修改、选择以及能否通过页面内搜索功能进行搜索。这也会影响它在无障碍功能树中的可见性。interactivity
属性用于指定元素及其平面树后代(包括文本行)是否处于不活跃状态。interactivity
属性接受以下两个值之一:auto
或 inert
。
逻辑溢出属性
借助 overflow-inline
和 overflow-block
CSS 属性,您可以相对于 writing-mode 设置内嵌和块方向的溢出。在横向写入模式下,overflow-inline
映射到 overflow-x
;而在纵向写入模式下,它映射到 overflow-y
。
与签名相关的函数:abs()
和 sign()
dynamic-range-limit
属性
让网页限制 HDR 内容的亮度上限。
shape()
函数
shape()
函数允许在 clip-path
属性中使用响应式自由形式形状。借助它,您可以定义一系列命令,这些命令等同于 path()
中的命令。不过,这些命令接受响应式单位(例如 %
或 vw
),以及自定义属性等任何 CSS 值。
::column
伪元素
::column
伪元素,可用于将一组有限的样式应用于生成的 fragment。具体而言,这仅限于不会影响布局且可以在布局后应用的样式。
::scroll-button()
伪元素
允许将交互式滚动按钮创建为伪元素。例如:
.scroller {
overflow: auto;
}
.scroller::scroll-button(inline-start) {
content: "<";
}
.scroller::scroll-button(inline-end) {
content: ">";
}
这些元素应可聚焦,并像按钮一样运作(包括其 UA 样式)。
激活后,应沿相应方向滚动一定距离。如果无法沿该方向滚动,则应停用这些按钮(并使用 :disabled
设置样式),否则应启用这些按钮(并使用 :enabled
设置样式)。借助此选择器,您可以定义四个逻辑方向的按钮:block-start
、block-end
、inline-start
、inline-end
;以及四个实际方向的按钮:up
、down
、left
、right
。
::scroll-marker
和::scroll-marker-group
为滚动容器添加了 ::scroll-marker
和 ::scroll-marker-group
。借助这些伪元素,您可以为滚动容器内的所有关联项创建一组可聚焦的标记。
嵌套伪元素样式
支持对嵌套在其他伪元素中的伪元素设置样式。
目前,已定义对 ::before::marker
和 ::after::marker
的支持,未来还将支持 ::column::scroll-marker
。
对 :visited
链接历史记录进行分区
为防止用户浏览记录泄露,只有在用户之前从此顶级网站和框架源点点击了锚元素时,锚元素才会采用 :visited
样式。由于只会为之前在该网站和框架中点击过的链接设置样式,因此为获取 :visited
链接样式信息而开发的许多旁道攻击现在已过时,因为它们无法再向网站提供有关用户的新信息。
自链接除外,指向网站自身网页的链接可以采用 :visited
样式,即使这些链接之前从未在此顶级网站和框架源中被点击过也是如此。此豁免仅在与顶级框架同源的顶级框架或子框架中启用。由于网站已经知道用户访问了哪些子网页,因此不会泄露任何新信息,隐私保护优势仍然存在。这是社区提出的一项例外情况,旨在改善用户体验。
插值进度函数表示法:CSS *progress()
函数
safe-area-max-inset-
* 变量
除了 safe-area-inset
环境变量之外,Chrome 现在还支持这些变量的 max-area-safe-inset-
* 变体。与动态内边距不同,最大内边距不会发生变化,并且表示可能的最大安全区域内边距。
在构建高性能端到端 Web 体验时,这些值是必不可少的。
Web API
向 Web Speech API 添加了 MediaStreamTrack
支持
向 Web Speech API 添加了 MediaStreamTrack
支持。Web Speech API 是一款 Web 标准 API,可让开发者将语音识别和合成功能集成到其网页中。目前,Web Speech API 使用用户的默认麦克风作为音频输入。借助 MediaStreamTrack 支持,网站可以使用 Web Speech API 为其他音频源(包括远程音轨)添加字幕。
Blob 网址分区:提取和导航
作为存储分区的延续,此功能会按存储键(顶级网站、框架源和 has-cross-site-ancestor 布尔值)对 Blob 网址访问进行分区,但顶级导航除外,顶级导航将继续仅按框架源进行分区。
适用于脚本的 CSP require-sri-for
借助 require-sri-for
指令,您可以断言给定类型的每个资源都需要进行完整性检查。如果尝试在不使用完整性元数据的情况下加载此类资源,则该尝试将失败并触发 CSP 违规报告。此 intent 涵盖此指令的 "script"
值。
创建 Service Worker 客户端并继承 srcdoc
iframe 的 Service Worker 控制器
Srcdoc 上下文文档目前不是服务工件客户端,也不受其父级服务工件的覆盖。这会导致一些差异(例如,Resource Timing 会报告这些文档加载的网址,但服务工件不会拦截这些网址)。此目的是通过为 srcdoc
iframe 创建服务工件客户端并使其继承其父级的服务工件控制器来修正差异。
将点击事件分派给捕获的指针
如果在分派 pointerup
事件时捕获了指针,则 click
事件将分派给捕获的目标,而不是 pointerdown
和 pointerup
事件的最近共同祖先,如界面事件规范所述。对于未捕获的指针,click
目标保持不变。
Float16Array
添加了 Float16Array
类型的数组。写入 Float16Array
实例时,数值会舍入为 IEEE fp16。
将导航启动器纳入 HTTP 缓存分区键
Chrome 的 HTTP 缓存键值方案已更新为包含 is-cross-site-main-frame-navigation
布尔值,以防范涉及顶级导航的跨网站泄露攻击。具体而言,这将防止跨网站攻击,在这种攻击中,攻击者可以发起对给定网页的顶级导航,然后导航到已知由该网页加载的资源,以便通过加载时间推断敏感信息。这项变更还可以防止恶意网站使用导航信息推断用户是否之前访问过给定网站,从而更好地保护隐私。
HSTS 跟踪防范
通过 HSTS 缓存减少第三方对用户的跟踪。
此功能仅允许对顶级导航进行 HSTS 升级,并阻止对子资源请求进行 HSTS 升级。这样一来,第三方网站就无法使用 HSTS 缓存来跨网站跟踪用户。
调用方命令:command
和 commandfor
属性
借助 <button>
元素上的 command
和 commandfor
属性,您可以以更易于访问且更具声明性的方式为按钮分配行为,同时减少 bug 并简化互动所需的 JavaScript 量。具有 commandfor
和 command
属性的按钮在被点击、轻触或通过按键操作触发时,会对 commandfor
引用的元素调度 CommandEvent
,并执行一些默认行为,例如打开对话框和弹出式窗口。
关联 rel="facilitated-payment"
以支持推送付款
添加了对 <link rel="facilitated-payment" href="...">
的支持,以提示浏览器应通知已注册的付款客户有待处理的推送付款。
NavigateEvent
sourceElement
属性
当导航由元素(即链接点击或表单提交)启动时,NavigateEvent
上的 sourceElement
属性将返回发起导航的元素。
NotRestoredReasons API 原因名称更改
NotRestoredReasons
API 将更改一些原因文本,以符合标准化名称。监控这些原因的开发者可能会注意到原因文本发生了变化。
设备端 Web Speech API
Service Worker 客户端网址会忽略 history.pushState
更改
修改了服务工件 Client.url
属性,以使用 history.pushState()
和其他类似历史记录 API 忽略文档网址更改。Client.url
属性应为 HTML 文档的创建网址,该网址会忽略此类更改。
支持 SVGAElement
的 rel
和 relList
属性
SVG 2.0 中的 SVGAElement 接口允许对 <a>
元素进行操作,类似于 HTML 锚元素。支持 rel
和 relList
属性可增强开发者的安全性和隐私性。这种与 HTML 锚元素的一致性可确保在各种 Web 技术中实现一致性和易用性。
RTC 编码帧的时间戳
此功能的实现方式是,将通过 RTCPeerConnection 传输的 WebRTC 编码帧中存在的一些时间戳公开给 Web。相关时间戳如下:
- 捕获时间戳:帧最初捕获时的时间戳
- 接收时间戳:收到帧的时间戳
更新了 ProgressEvent
,以便对“已加载”和“总数”使用 double 类型
ProgressEvent
具有表示进度的属性 loaded
和 total
,它们的类型现在为 unsigned long long
。借助此功能,这两个属性的类型会改为 double
,这让开发者可以更好地控制值。例如,开发者现在可以创建 total
为 1 且 loaded
从 0 逐渐增加到 1 的 ProgressEvent。这与省略 max 属性时的 <progress>
HTML 元素的默认行为一致。
fetchLater
API
fetchLater()
API 是一种用于请求延迟提取的 JavaScript API,对于在网页生命周期结束时更可靠地进行信标传送特别有用。在文档中调用后,浏览器会将延迟请求加入队列,并将其设为“待处理”状态,并会在满足以下条件中的最早条件时调用该请求:
该文档会被销毁。在用户指定的时间过后。出于隐私保护方面的原因,当文档进入 bfcache 时,所有待处理请求都会被刷新,无论剩余时间有多长。浏览器决定何时发送。
该 API 会返回一个 FetchLaterResult
,其中包含一个布尔值字段 activated
,该字段可能会更新,以指明推迟的请求是否已发出。成功发送后,浏览器会忽略整个响应,包括正文和标头。
请注意,从 API 用户的角度来看,确切的发送时间是未知的。
新的来源试用
在 Chrome 135 中,您可以选择参与以下新的源试用。
兴趣调用方
此功能会向 <button>
和 <a>
元素添加 interesttarget
属性。interesttarget
属性会向元素添加“兴趣”行为,以便在用户对元素“表现出兴趣”时,在目标元素上触发操作。操作可以包括显示弹出式窗口等操作。用户代理将处理在用户“对元素表现出兴趣”时进行检测,所用方法包括使用鼠标将光标悬停在元素上、按键盘上的特殊热键或在触摸屏上长按元素。当用户表现出兴趣或失去兴趣时,系统会对目标触发 InterestEvent
,对于弹出式窗口,系统会执行默认操作(显示和隐藏弹出式窗口)。
基于签名的完整性
此功能为 Web 开发者提供了一种机制来验证其依赖的资源的来源,为对网站依赖项的信任奠定了技术基础。简而言之:服务器可以使用 Ed25519 密钥对对响应进行签名,Web 开发者可以要求用户代理使用特定公钥验证签名。这不仅是对内容安全政策提供的基于网址的检查的有益补充,也是对子资源完整性基于内容的检查的有益补充。
废弃和移除
此版本的 Chrome 引入了下列已废弃和已移除的功能。如需查看计划弃用、当前弃用和之前移除的功能的列表,请访问 ChromeStatus.com。
此版本的 Chrome 弃用了一项功能。
废弃了 Intl 语言区域信息的 getter
Intl Locale Info API 是 ECMAScript TC39 的第 3 阶段提案,旨在通过公开语言区域信息(例如一周数据 [一周的第一天、周末的开始日期、周末的结束日期、第一周的最短天数])和语言区域中使用的文本方向小时周期来增强 Intl.Locale
对象。Chrome 在 Chrome 99 中实现了该提案,但该提案已更改为将多个 getter 移至函数。我们需要移除已废弃的 getter,并重新启动已重命名的函数。
此版本的 Chrome 移除了三项功能。
移除了已废弃的 navigator.xr.supportsSession
方法
在收到 TAG 关于 API 形状的反馈后,我们于 2019 年 9 月在 WebXR 规范中将 navigator.xr.supportsSession
替换为了 navigator.xr.isSessionSupported
方法。自那时起,Chrome 中就已将其标记为已废弃,并会发出控制台警告,将开发者重定向到更新后的 API。该调用的使用率非常低,并且用于构建 WebXR 内容的所有主要框架均已确认已更新为使用较新的调用。
移除了 NavigateEvent
canTransition
属性
在 Chrome 108 中,NavigateEvent
的 transitionWhile()
方法和 canTransition
属性已替换为新的 intercept()
方法和 canIntercept
属性。当时,transitionWhile()
方法已被移除。不过,我们忘记移除 canTransition
属性,而是将其保留为 canIntercept
的别名。在 Chrome 135 中,我们将解决此问题并移除 canTransition
。任何 canTransition
用法都可以替换为 canIntercept
,行为不会发生变化。
移除了 WebGPU 限制 maxInterStageShaderComponents
我们之所以移除 maxInterStageShaderComponents
限制,是因为多种因素综合作用的结果:
- 与
maxInterStageShaderVariables
重复:此限制已经用于类似用途,即控制着在着色器阶段之间传递的数据量。 - 细微差异:虽然这两种限制的计算方式略有不同,但这些差异很小,可以在
maxInterStageShaderVariables limit
中有效管理。 - 简化:移除
maxInterStageShaderComponents
可简化着色器接口,并降低开发者的复杂性。这样,他们无需管理两个单独的限制(这两个限制同时适用,但存在细微差异),而是可以专注于更恰当且更全面的maxInterStageShaderVariables
。