除非另有说明,以下描述的变化适用于安卓、Chrome OS、Linux、macOS和Windows的最新Chrome测试频道版本。通过提供的链接或从ChromeStatus.com上的列表中了解更多关于这里列出的功能。截至DATE,Chrome 105是测试版。您可以在桌面版的Google.com或安卓版的Google Play Store上下载最新版本。
自定义高亮显示API
自定义高亮API扩展了高亮伪元素的概念,提供了一种对任意范围的文本进行样式化的方法,而不是局限于用户代理定义的::selection,::inactive-selection,::spelling-error, 和::grammar-error 。这在各种情况下都很有用,包括希望实现自己的选择的编辑框架、在虚拟化文档上查找页面、代表在线协作的多重选择,或者拼写检查框架。
如果没有这个功能,网络开发者和框架作者就不得不修改DOM树的底层结构来实现他们想要的渲染。这在所需的高光跨越多个子树的情况下是很复杂的,而且它还需要DOM更新,以便在高光变化时进行调整。自定义高亮API提供了一种添加和删除高亮的编程方式,它不影响底层DOM结构,而是基于范围对象对文本应用样式。
在105年,只支持颜色和背景颜色的伪元素。对其他项目的支持将在以后添加。
容器查询
容器查询允许作者根据容器元素的大小来设计元素的样式。这种能力意味着一个组件拥有它的响应式造型逻辑。这使得组件更有弹性,因为无论它出现在页面的什么地方,造型逻辑都是与它相连的。
容器查询类似于媒体查询,但针对容器的大小而不是视口的大小进行评估。一个已知的问题是,当作者在多栏布局中把容器查询与表格布局结合起来时,容器查询就不起作用了。我们希望能在106年解决这个问题。更多信息,请看@container 和 :has(): 两个强大的新响应式API。关于这个版本中的其他CSS特性,见下文。
:has() 伪类
:has() 伪类指定了一个元素,它至少有一个元素与作为参数传递的相对选择器相匹配。与其他选择器不同,:has() 伪类对于一个指定的元素,对前面的元素应用一个样式规则,特别是兄弟姐妹,祖先,以及祖先的前面的兄弟姐妹。例如,下面的规则只匹配有图像标签作为子标签的锚标签。
a:has(> img)
更多信息,请参见@container和:has():两个强大的新响应式API。关于这个版本中的其他CSS功能,见下文。
抓取上传流
Fetch上传流让网络开发者可以通过一个带有 [ReadableStream](https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream)体。以前,你只能在你准备好整个主体后开始请求。但现在,你可以在生成内容的同时开始发送数据,提高性能和内存使用。
例如,一个在线表单可以在用户关注一个文本输入字段时立即启动一个获取。当用户点击进入时,fetch() headers已经被发送。这个功能也允许你在客户端生成内容时发送,如音频和视频。更多信息,请参见使用fetch API的流请求。
安装的桌面Web应用程序的窗口控件覆盖
窗口控制覆盖扩展了应用程序的客户端区域,以覆盖整个窗口,包括标题栏,以及窗口控制按钮(关闭、最大化/恢复、最小化)。网络应用程序开发者负责整个窗口的绘图和输入处理,除了窗口控制覆盖以外。开发者可以使用这个功能,使他们安装的桌面Web应用看起来像操作系统的应用。更多信息,请参阅自定义PWA标题栏的窗口控制覆盖层。
起源试验
在这个版本的Chrome浏览器中,没有开始进行起源试验。但是,有一些正在进行的原点测试,您可以在Chrome原点测试仪表板上找到。原产地试验允许您尝试新功能,并将可用性、实用性和有效性方面的反馈意见提供给网络标准社区。要了解有关Chrome浏览器起源试验的更多信息,请访问《网络开发者起源试验指南》。微软的Edge浏览器在Chrome浏览器之外运行自己的起源试验。要了解更多信息,请查看Microsoft Edge Origin Trials Developer Console。
已完成的起源试验
以下功能以前是在Chrome浏览器的原点试验中,现在已默认启用。
工人中的媒体源扩展
媒体源扩展(MSE)API现在可以从DedicatedWorker 上下文,以便提高主窗口上下文上的HTMLMediaElement 缓冲媒体播放的性能。通过在DedicatedWorker 中创建一个MediaSource 对象,然后应用程序可以从中获取一个MediaSourceHandle 并调用postMessage() 将其发送到主线程以附加到一个HTMLMediaElement 。然后创建MediaSource 对象的上下文可以使用它来缓冲媒体。
视口高度的客户端提示
Chrome支持新的Sec-CH-Viewport-Height 客户端提示。这是与之前在Chrome中引入的Sec-CH-Viewport-Width 相对应的。它们一起为原点提供了视口尺寸的信息。要使用这些提示,请将Sec-CH-Viewport-Height 或Sec-CH-Viewport-Width 传给Accept-CH 头。
该版本的其他功能
为多屏幕窗口的放置提供准确的屏幕标签
这个版本增强了多屏窗口放置API所提供的屏幕标签字符串。具体来说,它改进了ScreenDetailed.label 属性,用来自设备的扩展显示识别数据(EDID)或更高级别的操作系统API的信息取代了以前的占位符。例如,标签属性现在不再返回 "外部显示器1",而是返回 "HP z27n "或 "内置Retina显示器 "之类的信息。这些更准确的标签与操作系统在显示设置对话框中显示的标签相匹配。这些标签只暴露在被用户授予"window-placement" 权限的网站上。
CSS。防止固定元素的过度滚动效果
将一个元素的position CSS属性设置为fixed (除非该元素的包含块不是根),现在将防止它执行overscroll-behavior所指定的效果。特别是,fixed-position 元素将不会在overscroll效果中移动。
DisplayMediaStreamConstraints.systemAudio
一个新的约束被添加到MediaDevices.getDisplayMedia() ,以表明是否应该向用户提供系统音频。用户代理有时会提供与视频一起捕获的音频。但不是所有的音频都是一样的。考虑一下视频会议应用。Tab音频通常是有用的,并且可以与远程参与者共享。但系统音频包括参与者自己的音频,可能不适合分享回去。要使用新的约束,请将systemAudio 作为一个约束。比如说。
const stream = await navigator.mediaDevices.getDisplayMedia({
这个功能只支持在桌面上。
暴露TransformStreamDefaultController
为了符合规范,TransformStreamDefaultController 类现在可以在全局范围内使用。这个类已经存在,并且可以通过以下代码访问,例如
let TransformStreamDefaultController; new TransformStream({ start(c) { TransformStreamDefaultController = c.constructor; } });
由于TransformStreamDefaultController 现在在全局范围内,这一变化使得这样的代码没有必要。这个类的可能用途包括在TransformStreamDefaultController.prototype 上打上猴子的属性,或者更容易地对它的现有属性进行功能测试。请注意,这个类是不可构造的。换句话说,这将抛出一个错误。
new TransformStreamDefaultController()
HTML Sanitizer API
HTML Sanitizer API是一种易于使用和安全的方法,可以从任意的、用户提供的内容中删除可执行代码。该API的目标是使构建没有跨站脚本漏洞的网络应用更容易,并将此类应用的部分维护负担转移到平台。
在这个版本中,只支持基本功能,特别是 Element.setHTML().Sanitize接口将在以后的阶段添加。还不支持命名的内容(SVG + MathML),只支持HTML。关于API的更多信息,请参阅HTML Sanitizer API - Web APIs。
import.meta.resolve()
import.meta.resolve() 方法返回所传递的指定器在当前脚本的上下文中会解析的URL。也就是说,如果你调用import() ,它将返回被导入的URL。指定符是一个以有效的方案或/,./, 或../ 中的一个开头的URL。 关于例子请看HTML规范。
这种方法使编写脚本更容易,因为它对脚本的确切位置或Web应用程序的模块设置不敏感。它的一些功能在今天是可以做到的,以较长的形式,通过结合new URL() 和现有的import.meta.url() 方法。但与导入地图的整合允许解析受导入地图影响的URL。
对导航API的改进
Chrome 105在导航API的NavigateEvent上引入了两个新方法(在102中引入),以改进在实践中被证明有问题的方法。intercept()在导航API的NavigateEvent上,Chrome 105引入了两个新方法,让开发者可以控制导航之后的状态,取代了transitionWhile() ,该方法被证明难以使用。scroll() ,该方法滚动到URL中指定的锚点,取代了restoreScroll() ,该方法并不适合所有类型的导航。关于现有方法的问题的解释和使用新方法的例子,请看NavigateEvent的变化。
transitionWhile() 和restoreScroll() 方法在这个版本中也被弃用。我们预计将在108年删除它们。关于这个版本中的其他弃用和删除的内容,请参见下文。
onbeforeinput全局事件处理程序内容属性
nbeforeinput 全局内容属性现在在Chrome中得到了支持。beforeinput 形式已经可以通过addEventListener() 。现在,Chrome还允许通过对d的测试进行特征检测。ocument.documentElement.onbeforeinput
不透明响应阻断 v0.1
不透明响应阻断(ORB)是跨源读取阻断(CORB)的一个替代。CORB和ORB都是启发式方法,试图防止 "无源 "子资源的跨源披露。
画中画API进入安卓系统
画中画API允许网站创建一个总是在其他窗口之上的浮动视频窗口,这样用户就可以在与设备上的其他网站或应用程序互动时继续消费媒体。这项功能从Chrome 70开始就在桌面上提供了。现在它可用于在安卓11或更高版本上运行的Chrome。这一变化只适用于<video> 元素。有关使用画中画API的信息,请参阅使用画中画观看视频。
响应.json()
Response() 构造函数允许从许多类型中创建响应的主体;但是现有的response.json() 实例方法并不能让你直接创建一个JSON对象。Response.json() 静态方法填补了这个空白。
Response.json()返回一个新的Response对象并接受两个参数。第一个参数需要一个字符串来转换为JSON。第二个参数是一个可选的初始化对象。
基于标记的客户提示委托的语法变化
将客户提示委托给第三方内容的语法正在发生变化,这些内容需要因用户代理减少而丢失的客户信息,该语法在Chrome 100中已经出厂。
以前的语法。
<meta name="accept-ch" value="sec-ch-dpr=(https://foo.bar https://baz.qux), sec-ch-width=(https://foo.bar)">
新的语法。
<meta http-equiv="delegate-ch" value="sec-ch-dpr https://foo.bar https://baz.qux; sec-ch-width https://foo.bar">
文件系统访问API的可写目录提示
Chromium现在允许在文件系统访问API的单一提示中返回具有读和写权限的目录。以前,Window.showDirectoryPicker() ,返回一个只读的目录(在显示读权限提示后),需要第二次提示才能获得写权限。这种双重提示是一种糟糕的用户体验,并导致了用户的混乱和权限疲劳。
弃用,和删除
这个版本的Chrome浏览器引入了以下列出的废弃和移除功能。请访问ChromeStatus.com,了解计划中的弃用、当前的弃用和先前的移除清单。
移除非安全环境下的WebSQL
非安全背景下的WebSQL现在已经被移除。Web SQL 数据库标准于 2009 年 4 月首次提出,并在 2010 年 11 月被放弃。Gecko从未实现这一功能,WebKit在2019年将其废弃。W3C鼓励那些需要替代品的人使用Web存储和索引数据库。
开发人员应该期待WebSQL本身在使用率足够低时被废弃和删除。
自定义标识符中不允许使用CSS默认关键词
在CSS自定义标识符中不再允许使用CSS关键字'default' ,这些标识符用于CSS中许多类型的用户定义的名称(例如,由@keyframes 规则、计数器、@container 名称、自定义布局或绘画名称创建的名称)。这将'default' 添加到限制在自定义标识符中使用的名称列表中,特别是'inherit','initial','unset','revert', 和'revert-layer' 。
导航 API 中的弃用情况
transitionWhile() 和restoreScroll() 方法在这个版本中也被废弃了,我们预计将在108年删除它们。需要这个功能的开发者应该使用新的intercept() 和scroll() 方法。关于现有方法的问题解释和使用新方法的例子,请看NavigateEvent的变化。
废弃Cookie域属性中的非ASCII字符
为了与最新的规范(RFC 6265bis)保持一致,Chromium将很快拒绝含有非ASCII字符的Domain 属性的cookies(例如,Domain=éxample.com )。
长期以来,Chromium、Safari和Firefox对cookie中的IDN域名属性的支持一直没有明确的规定,它们的行为都不一样。这一变化规范了Firefox拒绝具有非ASCII域属性的cookies的行为。
由于Chromium以前接受非ASCII字符,并试图将其转换为规范化的punycode进行存储,我们现在将应用更严格的规则,要求有效的ASCII(punycode,如果适用)域名属性。
从105开始,一个警告被打印到控制台。预计将在106中删除。
移除手势滚动DOM事件
手势滚动DOM事件已经从Chrome浏览器中删除,特别是gesturescrollstart 、gesturescrollupdate 和gesturescrollend 。这些都是非标准的API,被添加到Blink中用于插件,但也被暴露在网络上。