Chrome 58 中的弃用和移除功能

Joe Medley
Joe Medley

在几乎每个版本的 Chrome 中,我们都看到了针对产品及其性能以及网络平台功能的大量更新和改进。本文介绍了自 3 月 16 日起 Chrome 58(Beta 版)中的弃用和移除功能。此列表随时可能发生变化。

Android 上的鼠标停止触发 TouchEvents

在 Chrome 57 之前,Chrome 中的 Android 低级鼠标事件主要遵循专为触摸互动设计的事件路径。例如,按下鼠标按钮时发生的鼠标拖动动作会生成 MotionEvents(通过 View.onTouchEvent 传递)。

但是,由于触摸事件不支持悬停,因此悬停 mousemove 将遵循单独的路径。该设计具有许多副作用,包括触发 TouchEvents 的鼠标互动、所有鼠标按钮都显示为鼠标左键,以及 MouseEventsTouchEvents 抑制。

从 Chrome 58 开始,搭载 Android M 或更高版本的鼠标将:

  • 不再触发TouchEvents
  • 使用适当的按钮和其他属性触发一致的 MouseEvents 序列。

意图移除 | Chromestatus Tracker | Chromium 错误

取消了 usemap 属性的不区分大小写的匹配方式

usemap 属性以前定义为无大小写。遗憾的是,实现此功能非常复杂,以至于任何浏览器都无法正确实现它。研究表明,没有必要使用这种复杂的算法,甚至无需使用不区分大小写的 ASCII 匹配。

因此,我们更新了该规范,以便采用区分大小写的匹配方式。这种旧行为已在 Chrome 57 中废弃,现现已移除。

意图移除 | Chromestatus Tracker | Chromium 错误

移除通过内容发起的指向数据网址的顶部框架导航

非技术浏览器用户不熟悉,因此有越来越多的用户使用 data: 机制进行仿冒和钓鱼式攻击攻击。为防止出现这种情况,我们会阻止网页在顶级框架中加载 data: 网址。这适用于 <a> 标记、window.openwindow.location 和类似机制。data: 架构仍适用于页面下方加载的资源。

此功能将从 Chrome 60 中移除。

意图移除 | Chromestatus Tracker | Chromium 错误

移除了已弃用的动画路径属性名称

动画路径 CSS 属性允许作者沿着作者指定的路径为任何图形对象添加动画效果。根据该规范,Chrome 45 中实现了多项属性。这些属性的名称已于 2016 年年中对规范进行了更改。Chrome 实现了 Chrome 55 和 Chrome 56 中的新名称。控制台弃用警告也已实施。

Chrome 58 将移除旧属性名称。受影响的属性及其新名称如下所示。

已移除的属性 当前名称
动画路径 偏移路径
动作偏移 偏移距离
运动旋转 偏移-旋转
动作 offset

意图移除

从不安全的上下文中移除 EME

加密媒体扩展 (EME) 的某些用法公开了非开源的数字版权管理实现,涉及访问永久性唯一标识符和/或未采用沙盒机制或以特许访问权限的形式运行。通过非安全 HTTP 公开的网站会增加安全风险,因为这些网站可能会受到通道上的任何人的攻击。此外,当需要用户同意时,此类攻击者可能会利用针对非安全 HTTP 网站持久保留的接受请求。

EME 版本 1 规范已从 EME 版本 1 规范中移除对非安全上下文的支持,在提议的建议中不受支持,后续最终建议也不会纳入即将出台的建议或后续最终建议中。自 Chrome 44(2015 年 5 月)以来,该 API 一直在非安全源上显示弃用消息。在 Chrome 58 中,它现已移除。我们一直致力于从不安全的源中移除强大功能,这项变更正是这一举措的一部分。

意图移除 | Chromestatus Tracker | Chromium 错误

移除 HTMLEmbedElement 和 HTMLObjectElement 的旧版调用方

接口有一个旧版调用方意味着,某个实例可以作为函数调用。目前,HTMLEmbedElementHTMLObjectElement 支持此功能。在 Chrome 57 中,此功能已废弃。从 Chrome 58 开始,调用会抛出异常。

此变更使 Chrome 与最近的规范变更保持一致。Edge 或 Safari 不支持旧版行为,因此正在从 Firefox 中移除

意图移除 | Chromestatus Tracker | Chromium 错误

移除非标准的 ChaCha20-Poly1305 加密算法

2013 年,Chrome 31 基于 Dan Bernstein 教授的 ChaCha20 和 Poly1305 算法部署了新的 TLS 加密套件。这些协议后来在 IETF 被标准化为 RFC 7539RFC 7905,我们在 2016 年初推出了标准化变体,搭配 Chrome 49。我们现在将移除非标准款式/规格。

意图移除 | Chromestatus Tracker | Chromium 错误

取消对证书中的 commonName 匹配的支持

RFC 2818 描述了两种将域名与证书进行匹配的方法:使用 subjectAlternativeName 扩展中的可用名称,或者在没有 SAN 扩展的情况下回退到 commonName。回退到 commonName 的 RFC 2818(2000 年发布)已废弃,但很多 TLS 客户端仍支持这种机制,但通常不正确。

使用 subjectAlternativeName 字段使得证书在表达对 IP 地址或域名的绑定清晰明确,并且根据其与名称限制条件的交互进行完全定义。但是,commonName 含糊不清,因此对它的支持已成为 Chrome、它使用的库以及整个 TLS 生态系统中安全 bug 的根源。

移除 commonName 的兼容性风险很低。RFC 2818 弃用了此功能近 20 年,自 2012 年以来,基准要求(所有受大众信任的证书授权机构都必须遵循)要求提供 subjectAltName。自 Firefox 48 起,Firefox 已经要求为新颁发的受大众信任的证书指定 subjectAltName

意图移除 | Chromestatus Tracker | Chromium 错误

界面元素 regionsaddRegion()removeRegion() 已从 WebVTT 规范中移除,并已在 Chrome 58 中移除,以符合最新规范。我们预计此次移除不会受到任何影响,因为默认情况下不会启用此功能(即它位于某个标志之后)。需要替代方案的用户可以使用 Chrome 58 中新增的 VTTCue.region 属性。

Chromestatus Tracker | Chromium 错误

WebAudio:移除了 AudioSourceNode 接口

AudioSourceNode 接口不属于网络音频规范、不可构建且没有属性,因此它基本上没有开发者可访问的功能。因此,我们将将其移除。

意图移除 | Chromestatus Tracker | Chromium 错误

移除 webkitdropzone 全局属性

HTML5 拖放规范引入了 dropzone 全局属性,作为一种声明方法,用于指定某个 HTML 元素是否愿意成为拖放操作的目标、可拖放到该元素中的内容类型以及拖放操作(复制/移动/链接)。

此属性未能在浏览器供应商中赢得关注。Blink 和 WebKit 仅实现带前缀的属性 webkitdropzone。由于 dropzone 属性已于 2017 年 3 月初从该规范中移除,因此带前缀的版本将从 Chrome 中移除。

意图移除 | Chromestatus Tracker | Chromium 错误

废弃了以不安全的方式使用通知

通知是一项强大的功能,因为它允许网站调用系统界面来传输私密信息本身或私密信息已被更改的信号。攻击者可能会嗅探或窃取通过不安全连接通过通知发送的任何信息。Web 推送需要安全的来源,因此这项更改会使非推送通知与推送通知保持一致。我们一直致力于从不安全的源中移除强大功能,这项变更正是这一举措的一部分。

意图移除 | Chromestatus Tracker | Chromium 错误

不再使用来自不安全 iframe 的通知

来自 iframe 的权限请求可能会使用户感到困惑,因为很难区分包含网页的来源和发出请求的 iframe 的来源。如果请求的范围不明确,用户就很难判断是授予还是拒绝权限。

在 iframe 中禁止通知也可以使通知权限的要求与推送通知的要求保持一致,从而简化开发者的阻碍。

需要此功能的开发者可以打开一个新窗口来请求通知权限。

Chrome 62 中提供移除功能。

意图移除 | Chromestatus Tracker | Chromium 错误

移除了 indexDB.webkitGetDatabaseNames()

我们在 Chrome 中的 Indexed DB 是相对较新且前缀盛行时就添加了此功能。该 API 会异步返回一个源中现有数据库名称的列表,这似乎足够合理。

遗憾的是,该设计存在缺陷。结果在返回后可能会立即过时,因此它实际上仅用于日志记录,而非严重的应用逻辑。GitHub 问题提供了指向之前关于替代方案的讨论/链接的链接,而这些方案则需要采用其他方法。虽然开发者时常关注,但由于缺乏跨浏览器进度,库作者已解决了这个问题。

需要此功能的开发者需要开发自己的解决方案。例如,Dexie.js 等库使用一个全局表,该表本身是另一个用于跟踪数据库名称的数据库。

此功能已从 Chrome 60 中移除。

打算弃用 | Chromestatus Tracker | Chromium 错误