Chrome 53 中的 API 弃用和移除

Joe Medley
Joe Medley

在几乎每个版本的 Chrome 中,我们都会对该产品及其性能以及 Web 平台的功能进行大量更新和改进。本文介绍了 Chrome 52 中的变更。Chrome 52 目前处于 Beta 版阶段,发布时间为 6 月 9 日。此列表随时都可能发生变化。

基于 DHE 的加密方式将逐步淘汰

要点:桌面版 Chrome 53 中移除了基于 DHE 的密码,因为它们不适合长期使用。服务器应采用 ECDHE(如果可用),否则应采用纯 RSA 加密。

移除意图 | Chromestatus 跟踪器 | Chromium bug

去年,我们将 Chrome 中的最低 TLS 迪菲-赫尔曼组大小从 512 位增加到了 1024 位;不过,1024 位在长期来看是不够的。相关指标报告,Chrome 发现的大约 95% 的 DHE 连接使用 1024 位 DHE。再加上 TLS 中 DHE 的协商方式,使得很难超出 1024 位。

虽然有一个规范草稿可以解决此问题,但它仍处于草稿阶段,需要同时更改客户端和服务器。与此同时,ECDHE 已广泛实现和部署。服务器应升级到 ECDHE(如有)。否则,请确保已启用纯 RSA 加密套件。

自 Chrome 51 起,基于 DHE 的密码已被弃用。Chrome 53 将从桌面版中移除对此功能的支持。

FileError 废弃警告

要点:Chrome 54 预计会移除已废弃的 FileError 接口。将对 err.code 的引用替换为 err.nameerr.message

移除意图 | Chromestatus 跟踪器 | Chromium bug

当前版本的 File API 标准不包含 FileError 接口,并且在 2013 年的某个时间段弃用了对该接口的支持。在 Chrome 53 中,系统会将以下弃用警告输出到开发者工具控制台:

“FileError”已被弃用,并将在 54 中移除。请使用错误的“name”或“message”属性,而不是“code”。

这在不同情境下会产生不同的效果。

  • FileReader.errorFileWriter.error 将是 DOMException 对象,而不是 FileError 对象。
  • 对于异步 FileSystem 调用,ErrorCallback 将传递 FileError.ErrorCode,而不是 FileError
  • 对于同步 FileSystem 调用,系统会抛出 FileError.ErrorCode,而不是 FileError

此更改仅会影响依赖于直接将错误实例的代码 (e.code) 与 FileError 枚举值 (FileError.NOT_FOUND_ERR 等) 进行比较的代码。针对硬编码常量(例如 e.code === 1)进行测试的代码可能会因向用户报告错误而失败。

幸运的是,FileErrorDOMErrorDOMException 错误类型都共享 namemessage 属性,这些属性会为错误情形(换句话说,e.name === "NotFoundError")提供一致的名称。代码应改用这些属性,这些属性在所有浏览器中都适用,并且在 FileError 接口本身被移除后也能继续使用。

FileError 预计会移除在 Chrome 54 中。

移除了 <input type=search> 的 results 属性

要点results 属性将被移除,因为它不属于任何标准,并且在各浏览器中的实现也不一致。

意图移除 | Chrome 状态跟踪器 | Chromium bug

results 值仅在 webkit 中实现,在 webkit 中实现的行为非常不一致。例如,Chrome 向输入框添加了放大镜图标,而在 Safari 桌面版上,该值可以通过点击放大镜图标来控制弹出式窗口中显示的数量。由于这不属于任何标准,因此即将被弃用。

如果您仍需要在输入字段中添加搜索图标,则必须为该元素添加一些自定义样式。为此,您可以添加背景图片并在输入字段上指定左内边距。

    input[type=search] {
      background: url(some-great-icon.png) no-repeat scroll 15px 15px;
      padding-left:30px;
    }
 ```   

This attribute has been deprecated since Chrome 51.