Chrome 92:作为文件处理程序的网络应用以及新的JavaScript功能

150 阅读8分钟

除非另有说明,以下描述的变化适用于安卓、Chrome OS、Linux、macOS和Windows的最新Chrome测试频道版本。通过提供的链接或从ChromeStatus.com上的列表中了解更多关于这里列出的功能。截至2021年6月3日,Chrome 92为测试版

文件处理API

既然网络应用能够读写文件,那么下一个合乎逻辑的步骤就是让开发者将网络应用声明为其创建和处理的文件的处理程序。文件处理API使你能够做到这一点。例如,在一个文本编辑器PWA将自己注册为文件处理程序后,你可以在操作系统的文件管理器中右击一个.txt文件,并指示这个PWA(总是或只是一次)打开.txt文件。这意味着PWA离文件管理器只有一次(两次)点击的距离。

The Excalidraw context menu.

这改善了PWA用例的用户体验,使它们比现在更像操作系统的应用程序。比如说。

  • 办公室应用,如文本编辑器、电子表格应用和幻灯片制作器。
  • 图形编辑器和绘图工具。
  • 视频游戏关卡编辑器工具。

文件处理在92年开始进行起源试验,预计将运行到2021年8月底左右。有关该功能的更多信息,请参见让网络应用程序成为文件处理程序。关于这个版本中的其他起源试验的信息,见下面的起源试验

原产地测试

这一版本的Chrome浏览器引入了下文所述的起源试验。通过起源试验,您可以尝试新功能,并就可用性、实用性和有效性向网络标准社区提供反馈。要注册参加Chrome浏览器目前支持的任何一项起源试验,包括下文所述的试验,请访问Chrome起源试验仪表板。要了解有关Chrome浏览器中原产地测试的更多信息,请访问《网络开发者原产地测试指南》。Microsoft Edge运行自己的原产地试验,与Chrome不同。要了解更多信息,请参见Microsoft Edge Origin Trials Developer Console

新的原点测试

共享元素转换

共享元素过渡允许在单页应用程序(SPA)和多页应用程序(MPA)中使用一组简单的过渡。这通过让开发人员从一组用户代理提供的过渡效果中进行选择,以最小的努力增强了页面的视觉效果。如果没有这一点,单页应用程序的转换是困难的,因为它们需要仔细协调动画和DOM操作以达到所需的效果。多页应用程序的转换在大多数情况下是不可能的,因为每个页面只能控制它自己视图的内容。这个起源试验只适用于SPA用例。

这个版本的其他功能

允许的应用程序快捷方式的变化

大多数安卓启动器现在只允许三个应用快捷方式,而不是以前允许的四个。网站设置的快捷方式被添加到安卓启动器的应用图标中,占用了该应用的一个可用快捷方式插槽。欲了解更多信息,请参见使用应用程序快捷方式快速完成工作

CSS

@font-face的大小调整描述符

@font-face添加了尺寸调整描述符,允许在不影响CSSfont-size 和em等衍生指标的情况下,对特定字体的字形大小进行缩放。CSSfont-size 可以被看作是字体在一个盒子里的比例因子。该方框内的字形大小在不同的字体之间是不同的,而尺寸调整可以使它们在不同的字体之间保持协调。这就是为什么它通过使用这个描述符来匹配回退字体和主要网络字体,从而减少累积的布局偏移。

强迫性槽分布行为

强制性槽位分配允许节点到槽位的分配,而不需要标记中的槽位属性。 这使得基于输入条件和类型的动态插槽行为成为可能。该功能最初在Chrome 86中发布;在这个版本中,对API进行了一些调整,以确保与其他浏览器的互操作性。

JavaScript

该版本的Chrome浏览器采用了9.2版的V8 JavaScript引擎。它特别包括以下列出的变化。您可以在V8发布说明中找到最新功能的完整列表

为Intl.DateTimeFormat添加dayPeriod选项

Intl.DateTimeFormat() 方法中增加了dayPeriod选项(ECMA402 2021的一部分),因此调用者可以将时间格式化,如 "早上7点"、"上午11点" "中午12点"、"下午1点"、"晚上6点"、"晚上10点"(或者用中文说,"清晨7时"、"上午11时"、"中午12时"、"下午1时"、"下午6时"、"晚上10时")。

这增强了Intl.DateTimeFormat() ,与C++和Java中通过调用ICU和ICU4J已经实现的功能相匹配。如果没有这个功能,开发者需要在服务器中格式化季度,或者从服务器到客户端发送一组日周期模式和小时到日周期的映射来执行这些任务。

数组、字符串和类型化的Arrays的相对索引方法

Array.prototypeString.prototypeTypedArray 原型中增加了一个新的方法,名为at() ,允许用负数指数进行相对索引。例如。

let arr = [1,2,3,4]; arr.at(-1); // Returns 4

通过使用ICU LocaleMatcher来实现Intl BestFitMatcher

ICU LocaleMatcher现在实现了BestFitMatcher抽象操作,以更好地匹配locale数据。

桌面平台上的 SharedArrayBuffers 被限制在跨源隔离的环境中

SharedArrayBuffers 桌面平台上的共享ArrayBuffers现在被限制在跨源隔离环境中,与最近在Android和Firefox上的行为一致。跨源隔离页面被认为是一个安全的环境,因为它阻止加载未选择加入的跨源资源以及与跨源窗口进行通信。只有选择加入跨源隔离的页面才能够使用SharedArrayBuffers 。了解更多关于即将到来的选项,请访问SharedArrayBuffer Android Chrome 88和Desktop Chrome 92中的更新。

媒体会话API。视频会议操作

为媒体会话API添加操作,特别是"togglemicrophone""togglecamera""hangup" 。这使视频会议网站的开发者能够从浏览器界面处理这些动作。例如,如果用户将他们的视频通话放入画中画窗口,浏览器可以显示静音/取消静音、打开/关闭摄像头和挂断的按钮。当用户点击这些按钮时,网站通过媒体会话API来处理它们。更多信息,请参见我们最近的文章中的部分,或尝试我们的演示

适用于资源计时的污损来源标志

Chrome浏览器现在在计算获取的资源是否通过时间允许原点检查时,会考虑污损原点标志。时序允许原点检查用于资源计时,以确定页面是否可以接收页面中使用的资源的详细时序信息。在有多个跨原点重定向的情况下,污点原点标志会影响这个检查。在这些情况下,标头应该是'*'。换句话说,它不能再是一个特定的来源。

如果一个资源进行了两次跨起源的交叉(通过重定向),那么开发者需要使用Timing-Allow-Origin: * ,以使检查通过。例如,如果原产地A的页面获取原产地B的资源,该资源重定向到原产地C的资源,那么污点原产地标志被设置,最终的资源需要有Timing-Allow-Origin: * ,以便接收详细的时间信息。"

网络蓝牙制造商数据过滤器

网络蓝牙API现在可以根据制造商数据(如供应商ID和产品ID)进行过滤。开发人员已经能够通过浏览器选取器提示用户选择附近的蓝牙设备,以匹配他们宣传的名称和服务。然而,它还不可能根据广告中制造商的具体数据来过滤附近的蓝牙设备。制造商数据是通过options.filters上的新属性指定的,它被传递到Bluetooth.requestDevice() 。欲了解更多信息,请参阅通过JavaScript与蓝牙设备通信或尝试我们的演示

弃用和删除

该版本的Chrome浏览器引入了以下列出的废弃和删除内容。请访问ChromeStatus.com,了解当前的弃用先前的删除列表。

标准化支付方式标识符的支付处理程序

该功能使基于网络的支付处理程序能够接收带有非URL但标准化的支付方法标识符(如"basic-card""tokenized-card" )的paymentrequest 事件,该功能已被删除