Chrome 92 新变化:作为文件处理程序的网络应用,新的JavaScript功能等

712

除非另有说明,以下描述的变化适用于安卓、Chrome OS、Linux、macOS和Windows的最新Chrome测试版本。

截至2021年6月3日,Chrome 92为测试版。

文件处理API

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

The Excalidraw context menu.

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

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

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

起源试验

这一版本的Chrome浏览器引入了下文所述的起源试验。通过起源试验,可以尝试新功能,并就可用性、实用性和有效性向网络标准社区提供反馈。

共享元素转换

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

这个版本的其他功能

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

大多数安卓启动器现在只允许三个应用快捷方式,而不是以前允许的四个。网站设置的快捷方式被添加到安卓启动器的应用图标中,占用了该应用的一个可用快捷方式插槽。

CSS

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

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

强迫性Slot分配

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

JavaScript

该版本的Chrome浏览器采用了9.2版的V8 JavaScript引擎。可以在V8发布说明中找到最新功能的完整列表

为Intl.DateTimeFormat添加dayPeriod选项

Intl.DateTimeFormat() 方法中增加了dayPeriod选项(ECMA402 2021的一部分),因此调用者可以将时间格式化,如 "早上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

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

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

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

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

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

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

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

原文链接:blog.chromium.org/2021/06/chr…