在幾乎所有版本的 Chrome 中,我們都看到產品、效能和網路平台功能的更新和改善幅度相當顯著。本文將說明 Chrome 58 中淘汰和移除的項目,該版本自 3 月 16 日起為 Beta 版。這份清單內容隨時可能有所變動。
Android 上的滑鼠停止觸發 TouchEvents
在 Chrome 57 之前,Chrome 中的 Android 低階滑鼠事件主要會遵循觸控互動設計的事件路徑。舉例來說,在按下滑鼠按鈕時發生的滑鼠拖曳動作會產生 MotionEvents
,並透過 View.onTouchEvent
傳送。
但由於觸控事件無法支援懸停,因此懸停 mousemove 會遵循不同的路徑。這項設計會產生許多副作用,包括滑鼠互動會觸發 TouchEvents
、所有滑鼠按鈕都會顯示為左滑鼠按鈕,以及 MouseEvents
會遭到 TouchEvents
抑制。
自 Chrome 58 起,Android M 以上版本的滑鼠將:
- 不再觸發
TouchEvents
。 - 使用適當的按鈕和其他屬性,觸發一致的
MouseEvents
序列。
Intent to Remove | Chromestatus Tracker | Chromium Bug
移除 usemap 屬性不區分大小寫的比對功能
usemap
屬性先前定義為不區分大小寫。很遺憾,實作這項功能相當複雜,因此沒有任何瀏覽器正確實作這項功能。研究顯示,這類複雜的演算法並非必要,甚至 ASCII 大小寫不敏感比對也無須使用。
因此,我們更新了規格,以便套用區分大小寫的比對方式。舊版行為已在 Chrome 57 版淘汰,並已移除。
Intent to Remove | Chromestatus Tracker | Chromium Bug
移除由內容啟動的頂層框架導覽至資料網址
由於非技術背景的瀏覽器使用者不熟悉這些字元,我們發現 data:
架構越來越常用於假冒和網路釣魚攻擊。為避免這種情況發生,我們會禁止網頁在頂端框架中載入 data:
網址。這項規定適用於 <a>
標記、window.open
、window.location
和類似機制。data:
配置仍可用於網頁載入的下方資源。
這項功能將在 Chrome 60 版中移除。
Intent to Remove | Chromestatus Tracker | Chromium Bug
移除動態路徑屬性的已淘汰名稱
動態路徑 CSS 屬性可讓作者沿著作者指定的路徑為任何圖形物件製作動畫。為了符合規格,我們在 Chrome 45 中實作了幾個屬性。這些屬性名稱已在 2016 年中旬的規格中變更。Chrome 已在 Chrome 55 和 Chrome 56 中實作新名稱。我們也實作了控制台淘汰警告。
在 Chrome 58 中,舊有的屬性名稱會遭到移除。受影響的屬性及其新名稱如下所示。
已移除的資源 | 目前名稱 |
---|---|
motion-path | offset-path |
motion-offset | offset-distance |
motion-rotation | offset-rotate |
動作 | 碳補償 |
從非安全的內容中移除 EME
加密媒體擴充功能 (EME) 的部分用途會揭露非開放原始碼的數位版權管理實作方式、涉及存取持續專屬 ID,以及/或是在未隔離或具有特權存取權的情況下執行。透過非安全 HTTP 暴露的網站,安全風險會增加,因為這些網站可能會遭到管道中的任何人攻擊。此外,如果需要使用者同意,攻擊者可能會利用不安全的 HTTP 網站持續接受的行為。
EME 1 版規格已移除對非安全內容的支援,且建議的建議不支援這類內容,後續的最終版本也不會支援。這項功能不會納入即將提出的建議或後續的最終建議。自 Chrome 44 版 (2015 年 5 月) 起,API 就會在非安全來源上顯示淘汰訊息。在 Chrome 58 中,這項功能已遭到移除。這項異動是我們從不安全的來源移除強大功能的一部分。
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
移除標準前 ChaCha20-Poly1305 密碼
2013 年,Chrome 31 部署了以 Dan Bernstein 教授的 ChaCha20 和 Poly1305 演算法為基礎的新 TLS 加密套件。這些標準後來經過微調,在 IETF 中以 RFC 7539 和 RFC 7905 的形式發布。我們在 2016 年初推出標準化變化版本,並與 Chrome 49 一併發布。我們現在正在移除標準前版本的子類。
Intent to Remove | Chromestatus Tracker | Chromium Bug
移除憑證中 commonName 比對功能的支援
RFC 2818 說明瞭兩種比對網域名稱與憑證的方法:使用 subjectAlternativeName
擴充功能中的可用名稱,或是在沒有 SAN 擴充功能的情況下,改為使用 commonName
。在 RFC 2818 (2000 年發布) 中,回復至 commonName
已淘汰,但許多 TLS 用戶端仍支援這項功能,但通常會出現錯誤。
使用 subjectAlternativeName
欄位可清楚表示憑證是否表示與 IP 位址或網域名稱的繫結,並完整定義與名稱限制的互動方式。不過,commonName
的用法不明確,因此在 Chrome、Chrome 使用的程式庫,以及整個 TLS 生態系統中,都曾出現過因支援 commonName
而導致的安全性錯誤。
移除 commonName
的相容性風險不高。RFC 2818 已淘汰近 20 年,而基準要求 (所有公開信任憑證授權單位都必須遵守) 自 2012 年起就要求必須提供 subjectAltName
。自 Firefox 48 起,Firefox 已要求所有新核發的公開信任憑證都必須具備 subjectAltName
。
Intent to Remove | Chromestatus Tracker | Chromium Bug
TextTrack 的 VTTRegion 相關位元
介面元素 regions
、addRegion()
和 removeRegion()
已從 WebVTT 規格中移除,並在 Chrome 58 中移除,以符合最新規格。由於這項功能從未預設啟用 (也就是說,必須透過旗標啟用),因此這項移除作業對使用者影響不大。如需替代方案,可以使用 Chrome 58 中新增的 VTTCue.region
屬性。
Chromestatus Tracker | Chromium Bug
WebAudio:移除 AudioSourceNode 介面
AudioSourceNode
介面並非 Web Audio 規格的一部分,無法建構,也沒有屬性,因此基本上沒有任何可供開發人員存取的功能。因此,我們正在移除該影片。
Intent to Remove | Chromestatus Tracker | Chromium Bug
移除 webkitdropzone 全域屬性
HTML5 拖曳和放置規格引進了 dropzone
全域屬性,做為宣告式方法,用於指定 HTML 元素是否願意成為拖曳和放置作業的目標、可放到元素上的內容類型,以及拖曳和放置作業 (複製/移動/連結)。
這項屬性未能獲得瀏覽器供應商的青睞。Blink 和 WebKit 只會實作屬性 webkitdropzone
的前置字元形式。由於 dropzone
屬性已在 2017 年 3 月初從規格中移除,Chrome 也將移除前置字元版本。
Intent to Remove | Chromestatus Tracker | Chromium Bug
淘汰通知的不安全用法
通知是一項強大的功能,因為它可讓網站叫用系統 UI,傳送私人資訊本身或私人資訊變更的信號。攻擊者可能會透過不安全的連線,嗅探或竊取透過通知傳送的任何資訊。網頁推播需要安全的來源,因此這項異動會將非推播通知與推播通知對齊。這項異動是我們從不安全的來源移除強大功能的一部分。
Intent to Remove | Chromestatus Tracker | Chromium Bug
淘汰使用不安全 iframe 的通知
來自 iframe 的權限要求可能會讓使用者感到困惑,因為他們很難區分包含頁面的來源,以及提出要求的 iframe 來源。如果要求範圍不明確,使用者就很難判斷是否要授予或拒絕權限。
禁止在 iframe 中顯示通知,也能讓通知權限與推播通知的權限保持一致,讓開發人員更容易操作。
需要這項功能的開發人員可以開啟新視窗,要求通知權限。
這項功能已在 Chrome 62 版中移除。
Intent to Remove | Chromestatus Tracker | Chromium Bug
移除 indexedDB.webkitGetDatabaseNames()
我們在 Chrome 中新增了這項功能,當時 Indexed DB 還算是新功能,而前置字串也相當熱門。API 會以非同步方式傳回來源中現有資料庫名稱的清單,這似乎相當合理。
很遺憾,這項設計有缺陷,因為結果可能在傳回後立即失效,因此只能用於記錄,而非嚴肅的應用程式邏輯。GitHub 問題追蹤/連結至先前討論的替代方案,這些方案需要採用不同的方法。雖然開發人員偶爾會對此感興趣,但由於跨瀏覽器的進度不足,程式庫作者已解決這個問題。
需要這項功能的開發人員必須自行開發解決方案。舉例來說,Dexie.js 等程式庫會使用全域資料表,而全域資料表本身就是另一個用來追蹤資料庫名稱的資料庫。
這項功能已在 Chrome 60 版中移除。