Chrome 83 的新功能

Chrome 83 现已开始面向稳定版发布。

以下是您需要知晓的相关信息:

我是 Pete LePage,在家办公和录制视频。我们来深入了解一下 Chrome 83 中面向开发者的新功能吧!

可信类型

基于 DOM 的跨站脚本攻击是 Web 上最常见的安全漏洞之一。很容易在无意中将其引入到您的网页中。受信任类型有助于防止此类漏洞,因为它们要求您先处理数据,然后再将其传递给可能危险的函数。

innerHTML 为例,如果启用可信类型,当我尝试传递字符串时,会因 TypeError 而失败,因为浏览器不知道是否可以信任该字符串。

// Trusted types turned on
const elem = document.getElementById('myDiv');
elem.innerHTML = `Hello, world!`;
// Will throw a TypeError

相反,我需要使用安全函数(例如 textContent),传入受信任的类型,或者创建元素并使用 appendChild()

// Use a safe function
elem.textContent = ''; // OK

// Pass in a trusted type
import DOMPurify from 'dompurify';
const str = `Hello, world!`;
elem.innerHTML = DOMPurify.sanitize(str, {RETURN_TRUSTED_TYPE: true});

// Create an element
const img = document.createElement('img');
img.src = 'xyz.jpg';
elem.appendChild(img);

在启用受信任类型之前,您需要使用 report-only CSP 标头来识别和修复所有违规问题。

Content-Security-Policy-Report-Only: require-trusted-types-for 'script'; report-uri //example.com

然后,在一切就绪后,您就可以正确开启了。 如需了解完整详情,请参阅 web.dev 上的使用可信类型防范基于 DOM 的跨站脚本漏洞

表单控件更新

我们每天都在使用 HTML 表单控件,它们是 Web 互动性的重要组成部分。这些功能易于使用、内置无障碍功能,并且对用户来说很熟悉。表单控件的样式可能会因浏览器和操作系统而异。我们经常需要发布大量 CSS 规则,才能在各种设备上实现一致的外观。

之前,表单控件的默认样式。
更新后,表单控件的样式。

Microsoft 一直致力于改进表单控件的外观,这让我深感钦佩。除了视觉效果更出色之外,它们还支持更好的触控操作,并且无障碍功能更完善,包括改进了键盘支持!

新表单控件已在 Microsoft Edge 中推出,现在也已在 Chrome 83 中推出。如需了解详情,请参阅 Chromium 博客上的表单控件和焦点更新

源试用

使用 measureMemory() 衡量内存

从 Chrome 83 开始,performance.measureMemory() 是一个新 API,可用于衡量网页的内存用量并检测内存泄漏。

内存泄漏很容易引入:

  • 忘记取消注册事件监听器
  • 从 iframe 捕获对象
  • 不关闭工作器
  • 在数组中累加对象
  • 以此类推

内存泄漏会导致网页在用户看来运行缓慢且臃肿。

if (performance.measureMemory) {
  try {
    const result = await performance.measureMemory();
    console.log(result);
  } catch (err) {
    console.error(err);
  }
}

如需详细了解这项新 API,请参阅 web.dev 上的使用 measureMemory() 监控网页的内存总用量

对原生文件系统 API 的更新

在 Chrome 83 中,Native File System API 开始了新的源试用,支持可写入的流,并能够保存文件句柄。

async function writeURLToFile(fileHandle, url) {
  // Create a FileSystemWritableFileStream to write to.
  const writable = await fileHandle.createWritable();
  // Make an HTTP request for the contents.
  const response = await fetch(url);
  // Stream the response into the file.
  await response.body.pipeTo(writable);
  // pipeTo() closes the destination pipe automatically.
}

可写入流可以更轻松地写入文件,并且由于它是流,因此您可以轻松地将响应从一个流管道到另一个流。

将文件句柄保存到 IndexedDB 后,您可以存储状态或记住用户正在处理的文件。例如,保留最近修改的文件列表、打开用户上次处理的文件等。

您需要新的源试用令牌才能使用这些功能,因此请参阅 web.dev 上更新后的文章 The Native File System API: Simplifying access to local files,了解所有详细信息以及如何获取新的源试用令牌。

其他来源试用

查看源代码试用版中功能的完整列表。

新的跨源政策

某些 Web API 会增加 Spectre 等旁道攻击的风险。 为降低此类风险,浏览器提供了一种基于用户选择的隔离环境,称为“跨源隔离”。跨源隔离状态还可以防止修改 document.domain。能够修改 document.domain 可允许同一网站上的文档之间进行通信,这被视为同源政策中的漏洞。

如需了解完整详情,请参阅 Eiji 的博文使用 COOP 和 COEP 使您的网站实现“跨源隔离”

Web Vitals

衡量用户体验质量有很多方面。虽然用户体验的某些方面会因网站和情境而异,但有一组常见的信号(即“核心网页指标”)对所有网络体验来说都是至关重要的。此类核心用户体验需求包括网页内容的加载体验、互动性和视觉稳定性,它们共同构成了 2020 年核心网页指标的基础。

  • Largest Contentful Paint 用于衡量感知的加载速度,并在网页加载时间轴中标记网页主要内容可能已加载的时间点。
  • First Input Delay 用于衡量响应速度,并量化用户在首次尝试与网页互动时获得的体验。
  • Cumulative Layout Shift 用于衡量视觉稳定性,并量化可见网页内容的意外布局偏移量。

所有这些指标均可捕获以用户为中心的重要成效,可在现场衡量,并且具有相应的实验室诊断指标和工具。例如,虽然 Largest Contentful Paint 是总体加载指标,但也非常依赖于 First Contentful Paint (FCP) 和 Time To First Byte (TTFB),后两者仍然至关重要,需要持续监控和改进。

如需了解详情,请参阅 Chromium 博客上的网页指标简介:衡量网站运行状况的重要指标,了解完整详情。

等等

想知道未来会推出哪些新功能?不妨查看 Fugu API 跟踪器,了解详情!

深入阅读

本文仅介绍了一些主要亮点。如需了解 Chrome 83 中的其他变更,请点击以下链接。

订阅

如需及时了解我们的最新视频,请订阅我们的 Chrome Developers YouTube 频道,这样每当我们发布新视频时,您就会收到电子邮件通知。

我是 Pete LePage,我需要理发,但 Chrome 84 一发布,我就会立即为您介绍 Chrome 中的新变化!