在絕大多數的 Chrome 版本中,我們都發現大量的更新和改善項目,包含產品、效能和網路平台的功能。
在 Chrome 50 版 (預估的 Beta 版日期:3 月 10 日至 17 日) 中,Chrome 有一些異動。 這份清單隨時可能有所變動。
AppCache 已不適用於不安全的內容
TL;DR:為了檢索跨網站指令碼,我們正在針對不安全的來源淘汰 AppCache。在 Chrome 52 版中,我們預計這項限制僅適用於透過 HTTPS 提供內容的來源。
意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤
AppCache 是一項可離線且永久存取來源的功能,對跨網站指令碼攻擊攻擊而言,這個強大的權限提升功能是一項強大的權限。為了移除不安全來源中的強大功能,
Chrome 將僅透過 HTTPS 允許連線,藉此移除這個攻擊向量。我們將在 Chrome 50 版中淘汰 HTTP 支援,並預計在 Chrome 52 中完全移除此支援。
已移除 Document.defaultCharset
重點摘要:我們已移除 document.defaultCharset
,以提升規格法規遵循度。
意圖移除 | Chrome 狀態追蹤工具 | CRBug 問題
在 Chrome 49 版中淘汰的 document.defaultCharset
是一種唯讀屬性,可根據使用者的地區設定傳回系統的預設字元編碼。對保留這個值並沒有幫助,這個情況因瀏覽器在 HTTP 回應或嵌入網頁的中繼標記中會使用字元編碼資訊。
請改用 document.characterSet
取得 HTTP 標頭中指定的第一個值。如未提供,則會收到 <meta>
元素的 charset
屬性中指定的值 (例如 <meta
charset="utf-8">
)。最後,如果上述兩者都沒有,document.characterSet
就會是使用者的系統設定。
您可以前往這個 GitHub 問題,進一步瞭解客戶不需要考量的理由
已從連結元素中移除子資源屬性
TL;DR:移除對 HTMLLinkElement
的 rel
屬性 subresource
值的支援。
意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤
<link> 上 subresource
屬性的意圖是在瀏覽器閒置期間預先擷取資源。瀏覽器下載網頁後,就能預先下載其他網頁等資源,在使用者提出要求時,即可直接從瀏覽器快取中擷取。
subresource
屬性發生了許多問題。首先,這項功能無法正常運作系統會以低優先順序下載參照資源。且未在 Chrome 以外的任何瀏覽器中導入該屬性。Chrome 實作項目發生錯誤,導致資源被下載兩次。
想要透過預先載入內容改善使用者體驗的開發人員有許多選項,其中最可供自訂的選項,就是建構服務工作站來充分利用預先快取和 Caches API。其他解決方案包括 rel
屬性的其他值,包括 preconnect
、prefetch
、preload
、prerender
。其中部分選項仍在實驗階段,不一定支援廣泛支援。
移除不安全的傳輸層安全標準 (TLS) 版本備用設定
TL;DR:移除強制伺服器以較不安全或不安全的 TLS 版本傳回資料的機制。
意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤
傳輸層安全標準 (TLS) 支援協商版本的機制,提供新的 TLS 版本,同時兼顧相容性。部分伺服器會以這種方式實作,讓瀏覽器必須使用不安全的端點做為備用機制。因此,攻擊者可能會強制「任何」網站 (而不只是設定有誤的網站) 交涉到較弱的 TLS 版本。
受影響的網站無法與 ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION
連線。管理員應確保伺服器軟體為最新版本。如果還是無法解決問題,請與伺服器軟體供應商聯絡,看看是否有可用的修正方法。
移除 KeyboardEvent.prototype.keyLocation
TL;DR:移除 Keyboard.prototype.location
屬性不需要的別名。
意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤
這個屬性只是 Keyboard.prototype.location
屬性的別名,有助於區分鍵盤上多個地點的鍵。例如,這兩種屬性都可讓開發人員區分擴充鍵盤上的兩個 Enter
鍵。
RTCPeerConnection 方法需要的錯誤和成功處理常式
TL;DR:WebRTC RTCPeerConnection 方法 createOffer()
和 createAnswer()
,現在需要錯誤處理常式和成功處理常式。以前,可以只使用成功處理常式呼叫這些方法。這種使用率已淘汰。
意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤
在 Chrome 49 版中,如果您在沒有提供錯誤處理常式的情況下呼叫 setLocalDescription()
或 setRemoteDescription()
,我們新增了警告。從 Chrome 50 版開始,請務必提供錯誤處理常式引數。
按照 WebRTC 規格的要求,這是清除這些方法導入承諾的其中一部分。
以下是 WebRTC RTCPeerConnection 示範 的範例 (main.js, 第 126 行):
function onCreateOfferSuccess(desc) {
pc1.setLocalDescription(desc, function() {
onSetLocalSuccess(pc1);
}, onSetSessionDescriptionError);
pc2.setRemoteDescription(desc, function() {
onSetRemoteSuccess(pc2);
}, onSetSessionDescriptionError);
pc2.createAnswer(onCreateAnswerSuccess, onCreateSessionDescriptionError);
}
請注意,setLocalDescription()
和 setRemoteDescription()
都有錯誤處理常式。舊版瀏覽器如果預期只有成功處理常式,就只會忽略錯誤處理常式引數 (如果有的話);在舊版瀏覽器中呼叫這個程式碼不會造成例外狀況。
一般來說,如果是正式版 WebRTC 應用程式,建議您使用 adapter.js
,這是由 WebRTC 專案維護的填充碼,防止應用程式與規格變更和前置字串差異造成問題。
系統不再支援 XMLHttpRequestProgressEvent
TL;DR:系統會移除 XMLHttpRequestProgressEvent
介面以及 position
和 totalSize
屬性。
意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤
這個事件是為了支援 Gecko 相容性屬性 position
和 totalSize
。Mozilla 22 已捨棄這三者的支援,並已由 ProgressEvent
取代。
var progressBar = document.getElementById("p"),
client = new XMLHttpRequest()
client.open("GET", "magical-unicorns")
client.onprogress = function(pe) {
if(pe.lengthComputable) {
progressBar.max = pe.total
progressBar.value = pe.loaded
}
}
移除帶有前置字串的 Encrypted Media Extensions
TL;DR:我們已移除預先修正的加密媒體擴充功能,以便改用以規格為基礎的未加上前置字元取代項目。
意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤
在 Chrome 42 版中,我們為加密媒體擴充功能提供規格型的未加上前綴版本。這個 API 可用於探索、選取數位版權管理系統,並與 HTMLMediaElement
互動。
距離現在已經近一年前。由於未前置字串的版本具備比前置字串版本更多的功能,因此建議您移除加上前置字串的 API 版本。
移除對 SVGElement.offset 屬性的支援功能
TL;DR:系統已捨棄 SVGElement 的偏移屬性,並改用 HTMLElement
上更全面支援的屬性。
意圖移除 | Chrome 狀態追蹤工具 | Chromium 錯誤
一直以來,HTMLElement
和 SVGElement
都支援 Offset 屬性,但 Gecko 和 Edge 只支援 HTMLElement
上的這些屬性。為提高瀏覽器之間的一致性,這些屬性已在 Chrome 48 中淘汰,現在則是移除。
雖然對等屬性屬於 HTMLElement
的一部分,但是需要替代方案的開發人員也可以使用 getBoundingClientRect()