使用 Internet Explorer 11,你可以獲得與 Web 標準、其他瀏覽器和實際網站的更好相容性。 更新了對常用 Web 標準的支援並添加了可防止較舊版本的網站錯誤顯示的更改。
這些更改包括:
User-agent 字串更改 文檔模式更改 傳統 API 添加、更改和刪除 URL 字元編碼 自訂資料屬性 SVG“pointer-events”屬性的 HTML 支援 更新反映對基於標準的規範的更改 彈性方塊(“Flexbox”)布局更新 突變觀察者 指標事件 User-agent 字串更改
對於許多傳統網站,針對 IE11 的一些最明顯的更新涉及 user-agent 字串。 以下是針對 Windows 8.1 上的 IE11 報告的內容:
JavaScript
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
使用者代理程式字串的特定值會因諸多因素(例如,運行瀏覽器的作業系統、運行瀏覽器的裝置以及網站是否採用相容性檢視顯示)而有所不同。 有關詳細資料,請參閱使用者代理程式字串更改。
與先前版本的 Internet Explorer 一樣,部分 user-agent 字串會因環境條件的不同而有所差異。 以下是針對 Windows 7 上的 IE11 顯示的字串:
JavaScript
Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
如果將這些 user-agent 字串與早期版本的 Internet Explorer 報告的字串進行比較,你會發現以下更改:
相容 ("相容") 和瀏覽器 ("MSIE") 令牌已刪除。 "like Gecko" 令牌已添加(以便與其他瀏覽器一致)。 瀏覽器版本現在由新版本 ("rv") 令牌報告。
這些更改有助於防止 IE11 被(錯誤)標識為較早的版本。
通常,應避免檢測特定瀏覽器或瀏覽器版本。 基於此類測試的假設易於在更新瀏覽器時導致誤判。 相反,在你需要使用功能時檢測功能並使用漸進增強為不支援所需功能的瀏覽器或裝置提供簡化體驗。
在極少數情況下,必須唯一地標識 IE11。 使用 Trident 令牌來執行此操作。 文檔模式更改
Windows Internet Explorer 8 中引入了文檔模式,這些模式可以幫你實現從早期版本的瀏覽器支援的功能轉換為現行標準和其他瀏覽器指定的功能。 Windows Internet Explorer 的後續版本繼續使用此轉換,方法是引入對行業標準所定義功能的支援的同時,引入類比早期版本所支援功能的新文檔模式。
當許多網站已更新為向其他瀏覽器提供更豐富的體驗時,某些網站仍繼續使用現有的傳統功能支援向 Internet Explorer 提供傳統體驗,即便最新版本的瀏覽器支援為其他瀏覽器呈現的體驗。
從 IE11 開始,邊緣模式成為首選文檔模式;它代表可供瀏覽器使用的現行標準的最高支援。
使用 HTML5 文件類型聲明啟用邊緣模式:
HTML
<!doctype html>
Internet Explorer 8 中引入了邊緣模式並且每個後續版本中也提供了該模式。 注意,邊緣模式支援的功能會限制為呈現內容的特定瀏覽器版本支援的功能。
從 IE11 開始,文檔模式被棄用,除了臨時情況外不應再使用。 請確保更新依賴於傳統功能和文檔模式的網站,以便反映現行標準。
如果必須針對特定文檔模式,以便在重新運行網站來支援現行標準和功能時網站能夠工作,則請注意,你使用的是過渡功能,以後的版本中可能不提供該功能。
如果你當前針對傳統文檔模式使用 x-ua-compatible 標題,則你的網站可能無法反映適用於 IE11 的最佳體驗。 有關詳細資料,請參閱 modern.ie。
傳統 API 添加、更改和刪除
許多網站尋找支援傳統 (HTML4) 功能的瀏覽器,目的是提供針對早期瀏覽器最佳化的體驗。 對於支援傳統功能和現行標準(如 HTML5、CSS3 等)的瀏覽器,這是一個問題。 如果網站在搜尋現行標準支援之前檢測到傳統功能,則可以為支援現行標準的瀏覽器提供傳統體驗和更豐富的體驗。
因此,IE11 添加、更改、刪除了許多預設的傳統功能:
navigator.appName 屬性現在會返回 "Netscape" 以反映 HTML5 標準和匹配其他瀏覽器的行為。 navigator.product 屬性現在會返回 "Gecko" 以便反映 HTML5 標準和匹配其他瀏覽器的行為。 XDomainRequest 對象被 XMLHttpRequest 的 ORS 替換。 已添加對 __proto__ 的支援。 已添加 dataset 屬性。
另外,為了支援現行標準指定的功能,已刪除若干傳統 API 功能:
刪除 API 功能 替代功能 attachEvent addEventListener window.execScript eval window.doScroll window.scrollLeft、window.scrollTop document.all document.getElementById document.fileSize、img.fileSize 使用 XMLHttpRequest 可提取源 script.onreadystatechange 和 script.readyState script.onload document.selection window.getSelection document.createStyleSheet document.createElement("style") style.styleSheet style.sheet window.createPopup 使用 div 或 iframe(zIndex 值很高) 二進位行為 變化;使用基於標準的等效,如 canvas、SVG 或 CSS3 動畫 傳統資料繫結 使用架構提供的資料繫結,如 WinJS
這些更改在某種程度上可阻止編得不好的 user-agent 檢測機制(錯誤地)將 Internet Explorer 標識為較早版本。 因此,依靠現行標準的網站按預期顯示。 URL 字元編碼
IE11 更改了 URL 的字元編碼。 具體來說,現在使用 UTF-8 字元編碼對查詢字串和 XHR 請求進行編碼。
此更改會影響所有 URL,但以下除外:
定位名稱組件(也稱為“片斷”)。 使用者名稱和密碼組件。 file:// or ftp:// protocol links。
這些更改與其他瀏覽器行為匹配並簡化了跨瀏覽器 XHR 代碼。 自訂資料屬性
IE11 添加了對 HTML5 自訂資料屬性和 dataset 屬性的支援,可以提供對它們的編程存取權限。你可以使用 data- 首碼後跟屬性名稱的方式來向元素分配資料屬性: HTML
<div data-example-data="Some data here"></div>
要擷取或設定資料屬性的值,請使用此文法: JavaScript
// to get var myData = element.dataset.exampleData; // to set element.dataset.exampleData = "something new";
SVG“pointer-events”屬性的 HTML 支援
從 IE11 開始,也支援 pointer-events 作為 HTML 元素上的 CSS 屬性,其效果如下:
值 描述
無
該元素不會觸發指標輸入事件(無法進行點擊測試)。
其他有效指標事件值
該元素會觸發指標輸入事件。
預設情況下將繼承 pointer-events 屬性,所以會影響應用該屬性的元素的所有後代。 更新反映對基於標準的規範的更改
IE11 還包括用於支援基於標準的 Web 規範(已更新或仍在發展)的更新。 這其中包括與支援下列功能相關的更改: 彈性方塊(“Flexbox”)布局更新
使用 IE11,你可以更新網站來與最新的彈性方塊標準保持一致並簡化跨瀏覽器的代碼。
有關詳細資料,請參閱"彈性方塊(“Flexbox”)布局更新"。 突變觀察者
突變觀察者是 IE11 中新的標準 Web 平台功能,提供了對突變事件支援的所有相同方案的快速執行直接替代,以及對屬性變更事件支援的方案的替代。
有關詳細資料,請參閱"突變觀察者"和"將突變事件和屬性變更事件遷移到突變觀察者"。 指標事件
為了符合全球資訊網協會 (W3C) 指標事件規範的候選推薦,與 Internet Explorer 10 相比,IE11 實施已略有更改。
有關完整詳細資料,請參閱"指標事件更新"。