网络/连接

待审核

Add options bag to WebSocket constructor 链接已复制!

新增对将选项包(WebSocketInit 字典)作为第二个参数传递给 WebSocket 构造函数的支持。选项包最初将支持一个名为“protocols”的选项,允许开发者指定子协议(与现有的 protocols 参数类似),同时也可作为未来添加更多选项的扩展点。

以前,这段代码可以写成const socket = new WebSocket("wss://example.com:8080", "soap") 。之后,也可以写成const socket = new WebSocket("wss://example.com:8080", { protocols: "soap" }) 。

有关此更改,请参阅https://github.com/whatwg/websockets/issues/42和规范 PR https://github.com/whatwg/websockets/pull/76 。

待审核

Support targetAddressSpace option for WebSockets 链接已复制!

添加对 WebSocket 构造函数中传递 targetAddressSpace 选项的支持。这允许开发者指定与公共主机名的 WebSocket 连接应被视为“本地”或“回环”目标,与 Fetch API 的现有支持相匹配。其主要用途是为连接到尚不支持 HTTPS 的本地服务器(因为本地网络访问权限需要安全上下文)提供一种绕过混合内容限制的途径。

例如:连接到本地服务器的公共站点可以使用主机名,从而避免手动配置正在使用的确切私有 IP 地址:

const ws = new WebSocket("ws://local-server.example", { targetAddressSpace: "local"}

这将把 WebSocket 连接标记为指向本地地址,从而在安全环境下运行时绕过混合内容阻止。用户必须授予网站本地网络权限,WebSocket 连接才能成功建立,并且主机名必须解析为本地 IP 地址(否则连接将被阻止)。

这是基于https://chromestatus.com/feature/5080055102439424构建的,该功能向 WebSocket 构造函数添加了一个选项包。

安全

Local Network Access restrictions for Background Fetch 链接已复制!

后台获取请求现在要求服务工作线程的源具有必要的本地网络访问 (LNA) 权限,才能向本地或环回服务器发送请求。

这使得 Chromium 的实现与后台获取规范的意图保持一致,该规范规定此类请求必须遵循获取规范,并应用相同的安全策略,包括本例中的 LNA 检查。这可以防止网站通过使用后台获取规范而非常规获取规范来绕过 LNA 检查。

对于企业用户,您可以像以前处理来自 Service Worker 的常规 Fetch API 请求一样,使用现有的 LNA 企业策略:

CSS

CSS scroll-marker-group modes 链接已复制!

scroll-marker-group 属性已增强,以支持多种模式:

  1. 'links' - 生成的 ::scroll-marker-group 以“links”模式运行,功能类似于导航列表。如果省略此参数,则默认使用此模式。
  2. 'tabs' - 生成的 ::scroll-marker-group 以“tabs”模式运行,功能类似于标签列表。

每种模式都会改变 ::scroll-marker-group 和 ::scroll-markers 的焦点顺序和辅助功能行为,遵循 WAI-ARIA 模式。

更多详情:

链接模式(默认)

此模式旨在模拟标准导航地标与碎片锚点的组合。

语义角色

::scroll-marker-group 承担导航功能,而 ::scroll-marker 元素则承担链接功能。这与 <nav> + <a> 的结构模式完美契合。

键盘导航

所有 ::scroll-marker 元素都是顺序制表符,其原生功能类似于标准锚链接列表。

未受影响的目标

原始元素不会被强制分配任何角色,从而保持文档的自然语义结构完整无损。

激活焦点管理

当链接标记被激活时,它会将顺序焦点导航的起始点设置为目标元素(即原始元素),并且焦点会从标记处消失。这模拟了点击标准内部 <a href="#target"> 链接的原生行为。

标签页模式

此模式旨在原生复制选项卡模式,并作为选项卡式轮播模式的交互基础。

语义角色

::scroll-marker-group 隐式地被赋予了 tablist 角色,::scroll-marker 元素充当 tab 角色,而它们的源元素则获得 tabpanel 角色。这与所需的 WAI-ARIA Tabs 结构相符。

键盘导航(漫游标签索引)

它遵循标准实践中概述的复杂键盘交互方式。只有激活的滚动标记才能作为制表符。用户使用方向键在焦点组中导航(在标记之间切换),从而避免了需要在 20 个轮播点之间来回切换的“制表符陷阱”。

重点范围管理

该标记充当焦点导航范围的所有者。从活动标记处按下 Tab 键,焦点将直接移动到活动选项卡面板的内容中,符合选项卡式界面的规范。

树木修剪

非活动标签页的内容会从辅助功能树中显式隐藏。这模拟了非活动标签页面板上 aria-hidden="true" 或 inert 属性的预期行为,从而避免了开发人员手动编写状态更改脚本。

激活焦点

当标记被激活时,焦点会保持在标记上,这与标准标签的工作方式完全相同。

FontFace width attribute and font-width descriptor 链接已复制!

将 FontFace 的 width 属性和 @font-face 的 font-width 描述符分别作为 stretch 和 font-stretch 的别名公开。使 Chromium 与更新后的 CSS 字体加载和 CSS Fonts 4 规范保持一致。开发者现在可以交替使用 FontFace.width 和 CSS font-width 来检查或初始化字体宽度,而无需像 stretch 和 font-stretch 那样频繁切换。

其他

Expose CSSStyleValue hierarchy to Worker contexts 链接已复制!

CSS Typed OM 规范将 CSSStyleValue 层级结构暴露给工作线程的全局作用域([Exposed=(Window, Worker, PaintWorklet, LayoutWorklet)]),但 Blink 仅将 CSSStyleValue、CSSKeywordValue、CSSNumericValue、CSSUnitValue 和 CSSUnparsedValue 暴露给 Window 和工作线程。因此,与 Firefox 和 Safari 不同,这些构造函数在工作线程中未定义。

Secure Payment Confirmation: Locale Validation 链接已复制!

更新安全支付确认的locale设置数据字段,如果该字段中提供的任何语言标签均与安全支付确认对话框使用的语言不匹配,则返回“不支持的 DOMException”异常。如果该字段未设置或为空,则跳过此验证。

这有助于 Web 开发人员将他们提供给安全支付确认的数据语言与对话框中的语言进行匹配。

JavaScript

DOM

Light dismiss improvements for popovers and dialogs 链接已复制!

改进并简化了弹出窗口和对话框的轻度关闭行为,修复了一些错误。“轻度关闭”是指点击弹出窗口或对话框外部即可将其关闭的行为。修复的错误包括:触摸屏上的滚动操作不再触发轻度关闭,以及右键单击不再触发轻度关闭。

这项更改的根本机制是,浏览器将使用点击事件来触发轻量级关闭,而不是使用 pointerdown 和 pointerup 事件的组合。

隔离 Web 应用

Window Shape API 链接已复制!

窗口形状 API 允许 ChromeOS 上已加入允许列表的 独立 Web 应用自定义窗口形状。通过启用非矩形和非连续窗口布局,开发者可以实现与原生应用外观和风格相匹配的独特用户体验(例如控件、浮动面板和叠加层) window.setShape API 要求窗口处于无边框显示模式,并且需要授予窗口管理权限。

管理员可以使用现有的窗口管理策略来管理此功能:

新的源试用 (Origin Trials)

待审核

Private Verification Tokens 链接已复制!

网络上的自动化流量日益增长,许多网站为了应对这一问题,增加了用户操作的繁琐步骤,例如验证码(CAPTCHA)和其他挑战,以遏制恶意流量。但这降低了所有用户的网络体验,尤其对使用隐私浏览模式的用户影响更大。

私密验证令牌 (PVT) 是一种低熵机制,它允许网站将用户在常规浏览模式下建立的信任转移到私密浏览模式下,从而减少用户体验中的摩擦。PVT 在常规浏览会话期间发放,并在私密浏览模式下兑换。