Chrome 57 淘汰和移除 API

喬梅利
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 版中,這個元素會遭到移除。

意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤

移除加上前置字串的資源緩衝區管理 API

兩種方法和事件處理常式 webkitClearResourceTimings()webkitSetResourceTimingBufferSize()onwebkitresourcetimingbufferfull 皆已淘汰,受廠商限制。自 Chrome 46 版起,便已支援這些 API 的標準版本,且該版本也淘汰了前置函式。這些功能原本是在 WebKit 中實作,但 Safari 尚未啟用。Firefox、IE 10 以上版本和 Edge 的 API 版本只有前置字元。因此,我們正著手移除 Webkit 版本。

意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤

移除 ServiceWorkerMessageEvent,改用 MessageEvent

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

意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤

移除 Webkit 前置字串的 IndexedDB 全域別名

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

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

意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤

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

自 2011 年中起,Chrome 已支援 WebAudio,包括 AudioContext。 在後一年新增了 OfflineAudioContext。由於標準介面已支援標準介面的時間,以及 Google 對移除前置字串功能的長期目標,這些介面的前置字串版本已自 2014 年底起淘汰,目前現已移除。

意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤

淘汰並移除 webkitCancelRequestAnimationFrame

webkitCancelRequestAnimationFrame() 方法是已過時的供應商專用 API,而 Chromium 長期支援標準 cancelAnimationFrame()。因此,我們即將移除 Webkit 版本。

意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤

淘汰 usemap 屬性時不區分大小寫的比對功能

usemap 屬性先前定義為無大小寫。遺憾的是,這項實作方法十分複雜,因此所有瀏覽器都無法正確實作這項功能。研究建議,這類複雜的演算法不需要使用,甚至不需要使用 ASCII 不區分大小寫的比對。

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

意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤

淘汰服務工作站中的 FileReaderSync

Service Worker 規格向來始終有 (非固定) 要求,請注意「任何類型的同步要求不得在 Service Worker 中啟動」,以免封鎖 Service Worker。封鎖服務工作處理程序會封鎖來自受控網頁的所有網路要求。很抱歉,FileReaderSync API 一直在服務 Worker 中提供。

目前只有 Firefox 和 Chrome 在服務 Worker 中公開 FileReaderSync。 根據 Firefox 在規格討論中提出的協議應修正。Chrome 59 預計會移除這項功能。

意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤

淘汰 HTMLEmbedElement 和 HTMLObjectElement 的舊版呼叫端

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

這項異動將讓 Chrome 符合近期規格異動。Edge 或 Safari 不支援舊版行為,因此會從 Firefox 中移除

意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤

淘汰「交涉」的 RTCRtcpMuxPolicy

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

  • 非混合的 RTCP 會使用額外的網路資源。
  • 移除「交涉」可簡化 API 介面,因為「RtpSender」/「RtpReceiver」只會有單一傳輸方式。

在 Chrome 57 版中,「協議」功能已淘汰。我們認為這屬於非破壞性變更,因為使用者將收到淘汰訊息,但仍然可以建立 RTCPeerConnection。Chrome 63 不支援這項功能。

意圖淘汰 | Chromium 錯誤

停止支援子資源要求中的嵌入憑證

就安全的角度來看,將憑證硬式編碼為子資源要求並不容易,因為過去駭客會藉此暴力憑證。當已經取得憑證的子資源要求進入內部 IP 範圍 (例如路由器等),這類危險性就會更加嚴重。由於使用率低,關閉這個 (小) 安全孔似乎是很合理的做法。

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

意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤