Chrome 57 中的 API 弃用和移除

Joe Medley
Joe Medley

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

移除 BluetoothDevice.uuids 属性

为了让 Web Bluetooth API 符合当前规范,我们即将移除 BluetoothDevice.uuids 属性。您可以通过调用 device.getPrimaryServices() 来检索所有允许的 GATT 服务。

Chromium 错误

移除密钥生成元素

从 Chrome 49 开始,除非向此页面授予了权限,否则 <keygen> 的默认行为一直是返回空字符串。IE/Edge 不支持 <keygen>,也未指明支持 <keygen> 的公开信号。Firefox 已通过用户手势控制 <keygen>,但公开支持将其移除。Safari 随附的 <keygen>,尚未就其持续支持发表公开意见。在 Chrome 57 中,此元素会被移除。

意图移除 | Chromestatus Tracker | Chromium 错误

移除了带前缀的资源计时缓冲区管理 API

webkitClearResourceTimings()webkitSetResourceTimingBufferSize()onwebkitresourcetimingbufferfull 这两个方法和事件处理脚本都已过时,而且特定于供应商。从 Chrome 46 开始,这些 API 的标准版本就一直受支持,带有前缀的函数在该版本中也已弃用。这些功能最初是在 WebKit 中实现的,但 Safari 没有启用它们。Firefox、IE 10 及更高版本和 Edge 只有无前缀的 API 版本。因此,我们将移除 webkit 版本。

意图移除 | Chromestatus Tracker | Chromium 错误

移除了 ServiceWorkerMessageEvent,改为使用 MessageEvent

HTML 规范扩展了 MessageEvent,以允许 ServiceWorker 作为 source 属性的类型。将 client.postMessage() 和自定义消息事件的创建更改为使用 MessageEvent,而不是 ServiceWorkerMessageEvent。移除了 ServiceWorkerMessageEvent

意图移除 | Chromestatus Tracker | Chromium 错误

移除了带有 webkit 前缀的 IndexedDB 全局别名

在 Chrome 11 左右,IndexedDB 入口点和全局构造函数使用 webkit 前缀公开。不带前缀的版本是在 Chrome 24 中添加的,带前缀的版本在 Chrome 38 中已弃用。以下接口会受到影响:

  • webkitIndexedDB(主入口点)
  • webkitIDBKeyRange(不可调用的全局构造函数,但包含有用的静态方法)
  • webkitIDBCursor
  • webkitIDBDatabase
  • webkitIDBFactory
  • webkitIDBIndex
  • webkitIDBObjectStore
  • webkitIDBRequest
  • webkitIDBTransaction(不可调用的全局构造函数)

意图移除 | Chromestatus Tracker | Chromium 错误

WebAudio:移除了带前缀的 AudioContext 和 offlineAudioContext

Chrome 从 2011 年年中开始支持 WebAudio,包括 AudioContextOfflineAudioContext 是在第二年添加的。考虑到标准接口的支持时间已经很长,以及 Google 移除带前缀功能的长期目标,自 2014 年底以来,这些接口的带前缀版本已被弃用,现在将被移除。

意图移除 | Chromestatus Tracker | Chromium 错误

废弃并移除了 webkitCancelRequestAnimationFrame

webkitCancelRequestAnimationFrame() 方法是过时的供应商专用 API,而且 Chromium 长期支持标准 cancelAnimationFrame()。因此,我们将移除 webkit 版本。

意图移除 | Chromestatus Tracker | Chromium 错误

废弃了 usemap 属性的不区分大小写的匹配方式

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

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

意图移除 | Chromestatus Tracker | Chromium 错误

废弃了 Service Worker 中的 FileReaderSync

Service Worker 规范始终都有(非规范性)说明,即“不得在 Service Worker 内启动任何类型的同步请求”,以避免阻塞 Service Worker。阻止 Service Worker 也会阻止来自受控页面的所有网络请求。遗憾的是,早在 Service Worker 中就已经可以使用 FileReaderSync API 了。

目前,只有 Firefox 和 Chrome 在 Service Worker 中公开 FileReaderSync。Firefox 在规范讨论中同意解决此问题。我们预计会在 Chrome 59 中将其移除。

意图移除 | Chromestatus Tracker | Chromium 错误

废弃了 HTMLEmbedElement 和 HTMLObjectElement 的旧版调用方

接口有一个旧版调用方意味着,某个实例可以作为函数调用。目前,HTMLEmbedElementHTMLObjectElement 支持此功能。在 Chrome 57 中,此功能已废弃。移除后(在 Chrome 58 中是正常的),调用将抛出异常。

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

意图移除 | Chromestatus Tracker | Chromium 错误

废弃了“aosp”的 RTCRtcpMuxPolicy

Chrome 使用 rtcpMuxPolicy 来指定与使用 RTP/RTCP 多路复用相关的首选政策。在 Chrome 57 中,我们将默认的 rtcpMuxPolicy 更改为“require”,并废弃了“XMPP”,原因如下:

  • 非多路复用 RTCP 会使用额外的网络资源。
  • 移除“purchase”将使 API Surface 更简单,因为“RtpSender”/“RtpReceiver”将只有一个传输。

在 Chrome 57 中,“协商”已被弃用。我们认为这是一项非破坏性更改,因为用户会收到废弃消息,并且仍然可以创建 RTCPeerConnection。Chrome 63 中提供移除功能。

打算弃用 | Chromium 错误

不再支持在子资源请求中嵌入凭据

从安全角度来看,将凭据硬编码到子资源请求中存在问题,因为过去曾允许黑客对此凭据进行暴力破解。对于进入内部 IP 范围(路由器等)的有凭据的子资源请求,上述风险会加剧。由于使用率较低,关闭这个(小)安全漏洞似乎是相当合理的。

开发者可以嵌入不需要基本/摘要身份验证的资源,而是依靠 Cookie 和其他会话管理机制。

意图移除 | Chromestatus Tracker | Chromium 错误