Chrome 57 淘汰和移除 API

Joe Medley
Joe Medley

在幾乎所有版本的 Chrome 中,我們都看到產品、效能和網路平台功能的更新和改善幅度相當顯著。本文將說明 Chrome 57 中淘汰和移除的項目,該版本自 2 月初起為 Beta 版。這份清單內容隨時可能有所變動。

移除 BluetoothDevice.uuids 屬性

我們會移除 BluetoothDevice.uuids 屬性,讓 Web Bluetooth API 符合目前的規格。您可以呼叫 device.getPrimaryServices(),擷取所有允許的 GATT 服務。

Chromium 錯誤

移除金鑰產生元素

自 Chrome 49 起,除非授予此網頁權限,否則 <keygen> 的預設行為會傳回空字串。IE/Edge 不支援 <keygen>,且未指出支援 <keygen> 的公開信號。Firefox 已將 <keygen> 的使用者手勢設為門檻,但公開支持移除這項功能。Safari 會提供 <keygen>,但尚未公開表示是否會持續支援這項功能。在 Chrome 57 中,這個元素已遭移除。

Intent to Remove | Chromestatus Tracker | Chromium Bug

移除附帶前置字串的資源時間緩衝區管理 API

兩種方法和事件處理常式 webkitClearResourceTimings()webkitSetResourceTimingBufferSize()onwebkitresourcetimingbufferfull 已淘汰,且為供應商專用。自 Chrome 46 版起,系統就支援這些 API 的標準版本,且前置字串函式也在該版本中淘汰。這些功能原本是在 WebKit 中實作,但 Safari 並未啟用。Firefox、IE 10 以上版本和 Edge 僅提供未加上前置字元的 API 版本。因此,我們正在移除 WebKit 版本。

Intent to Remove | Chromestatus Tracker | Chromium Bug

移除 ServiceWorkerMessageEvent,改用 MessageEvent

HTML 規格擴充了 MessageEvent,允許 ServiceWorker 做為 source 屬性的類型。client.postMessage() 和自訂訊息事件的建立作業已改為使用 MessageEvent,而非 ServiceWorkerMessageEvent。已移除「ServiceWorkerMessageEvent」。

Intent to Remove | Chromestatus Tracker | Chromium Bug

移除 webkit 前置字元 IndexedDB 全域別名

IndexedDB 進入點和全域建構函式在 Chrome 11 左右的某處,已以 webkit 前置字公開。不含前置字元的版本是在 Chrome 24 中新增,而前置字元的版本則在 Chrome 38 中淘汰。受影響的介面如下:

  • webkitIndexedDB (主要進入點)
  • webkitIDBKeyRange (非可呼叫的全域建構函式,但具有實用的靜態方法)
  • webkitIDBCursor
  • webkitIDBDatabase
  • webkitIDBFactory
  • webkitIDBIndex
  • webkitIDBObjectStore
  • webkitIDBRequest
  • webkitIDBTransaction (不可呼叫的全域建構函式)

Intent to Remove | Chromestatus Tracker | Chromium Bug

WebAudio:移除 AudioContext 和 OfflineAudioContext 的前置字串

自 2011 年中起,Chrome 就支援 WebAudio,包括 AudioContextOfflineAudioContext 則是在隔年新增。考量標準介面已支援多久,以及 Google 長期目標是移除前置字元功能,因此這些介面的前置字元版本自 2014 年底起已淘汰,目前正在移除。

Intent to Remove | Chromestatus Tracker | Chromium Bug

淘汰並移除 webkitCancelRequestAnimationFrame

webkitCancelRequestAnimationFrame() 方法是已淘汰的供應商專屬 API,而 Chromium 早已支援標準 cancelAnimationFrame()。因此,我們正在移除 WebKit 版本。

Intent to Remove | Chromestatus Tracker | Chromium Bug

停用不區分大小寫的 usemap 屬性比對

usemap 屬性先前定義為不區分大小寫。很遺憾,實作這項功能相當複雜,因此沒有任何瀏覽器正確實作這項功能。研究顯示,這類複雜的演算法並非必要,甚至 ASCII 大小寫不敏感比對也無須使用。

因此,我們更新了規格,以便套用區分大小寫的比對方式。舊行為已在 Chrome 57 版中淘汰,預計在 Chrome 58 版中移除。

Intent to Remove | Chromestatus Tracker | Chromium Bug

在 Service Worker 中淘汰 FileReaderSync

Service Worker 規格一向有 (非規範性的) 附註:「任何類型的同步要求都不得在服務工作站內啟動」,以免阻斷服務工作站。封鎖 Service Worker 會封鎖受控網頁的所有網路要求。很抱歉,FileReaderSync API 早已在服務工作站中提供。

目前只有 Firefox 和 Chrome 會在服務工作者中公開 FileReaderSync。在 規格討論中,Firefox 同意應修正這個問題。預計在 Chrome 59 版中移除。

Intent to Remove | Chromestatus Tracker | Chromium Bug

淘汰 HTMLEmbedElement 和 HTMLObjectElement 的舊版呼叫端

介面含有舊版呼叫端,表示可將例項做為函式呼叫。目前 HTMLEmbedElementHTMLObjectElement 支援這項功能。在 Chrome 57 中,這項功能已淘汰。在移除後 (預計在 Chrome 58 版),呼叫會擲回例外狀況。

這項異動可讓 Chrome 符合近期的規格變更。Edge 或 Safari 不支援舊版行為,且已從 Firefox 中移除

Intent to Remove | Chromestatus Tracker | Chromium Bug

淘汰「negotiate」的 RTCRtcpMuxPolicy

Chrome 會使用 rtcpMuxPolicy 指定使用 RTP/RTCP 多工處理的偏好政策。在 Chrome 57 中,我們將預設的 rtcpMuxPolicy 變更為「require」,並淘汰「negotiate」,原因如下:

  • 未經多工處理的 RTCP 會使用額外的網路資源。
  • 移除「negotiate」可簡化 API 介面,因為「RtpSender」/「RtpReceiver」只會有單一傳輸。

在 Chrome 57 中,「negotiate」已淘汰。我們認為這項變更不會造成中斷,因為使用者會收到淘汰訊息,且仍可建立 RTCPeerConnection。這項功能已在 Chrome 63 版中移除。

Intent to Deprecate | Chromium Bug

淘汰子資源要求中內嵌憑證的支援功能

從安全性角度來看,將憑證硬式編碼至子資源要求會造成問題,因為這會讓駭客在過去使用暴力破解憑證。對於憑證子資源要求,如果這些要求可存取內部 IP 範圍 (例如路由器等),這些危險就會更加嚴重。考量到使用率偏低,因此關閉這個 (小型) 安全漏洞似乎相當合理。

開發人員可以嵌入不需要基本/摘要驗證的資源,改為仰賴 Cookie 和其他工作階段管理機制。

Intent to Remove | Chromestatus Tracker | Chromium Bug