在幾乎所有版本的 Chrome 中,我們都看到產品、效能和網路平台功能的更新和改善幅度相當顯著。本文將說明 Chrome 57 中淘汰和移除的項目,該版本自 2 月初起為 Beta 版。這份清單內容隨時可能有所變動。
移除 BluetoothDevice.uuids 屬性
我們會移除 BluetoothDevice.uuids
屬性,讓 Web Bluetooth API 符合目前的規格。您可以呼叫 device.getPrimaryServices(),擷取所有允許的 GATT 服務。
移除金鑰產生元素
自 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
,包括 AudioContext
。OfflineAudioContext
則是在隔年新增。考量標準介面已支援多久,以及 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 的舊版呼叫端
介面含有舊版呼叫端,表示可將例項做為函式呼叫。目前 HTMLEmbedElement
和 HTMLObjectElement
支援這項功能。在 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 和其他工作階段管理機制。