對於 Web 開發人員來講,文本兼容性是一個要考慮的重要問題。Windows Internet Explorer 8 引入了文本兼容性模式,該模式容許 Web 開發人員將瀏覽器設置爲以與舊版本相同的方式顯示網頁,從而容許開發人員選擇更新時間。javascript
本文檔將介紹由 Windows Internet Explorer 8 支持的文本兼容性模式,以及如何使用自定義標頭基於每一個頁面或每一個站點實現這些模式。實現適當的兼容性模式後,能夠確保站點與 Windows Internet Explorer 8 及更高版本兼容。css
Windows Internet Explorer 8 支持多種兼容性模式,它們可啓用不一樣的受支持的功能,並影響內容的呈現方式。例如,html
IE5 模式呈現內容時,像是使用了 Windows Internet Explorer 7 的 Quirks 模式,這與 Windows Internet Explorer 5 顯示內容的方式很類似。java
IE7 模式呈現內容時,不管頁面是否包含 <!DOCTYPE> 指令,都像是使用了 Windows Internet Explorer 7 的標準模式。css3
EmulateIE7 模式通知 Windows Internet Explorer 使用 <!DOCTYPE> 指令肯定如何呈現內容。標準模式指令以 Windows Internet Explorer 7 標準模式顯示,而 Quirks 模式指令以 IE5 模式顯示。與 IE7 模式不一樣,EmulateIE7 模式遵循 <!DOCTYPE> 指令。對於多數網站來講,它是首選的兼容性模式。api
IE8 模式最大限度地支持行業標準(包括 W3C Cascading Style Sheets Level 2.1 Specification 和 W3C Selectors API,並能有限支持 W3C Cascading Style Sheets Level 3 Specification(工做草案)。瀏覽器
Edge 模式通知 Windows Internet Explorer 以最高級別的可用模式顯示內容,這實際上破壞了「鎖定」模式。對於 Windows Internet Explorer 8,這與 IE8 模式是等效的。若是(假定)Windows Internet Explorer 的將來版本支持更高級別的兼容模式,設置爲 Edge 模式的頁面將顯示在由該版本支持的最高級別模式中;可是,當使用 Windows Internet Explorer 8 查看時,這些相同的頁面仍將顯示在 IE8 模式中。因爲在 Windows Internet Explorer 的將來版本中呈現頁面內容可能出現意外,建議 Web 開發人員將 Edge 模式僅用於測試頁面和其餘非生產活動。服務器
要爲網頁指定文本模式,請使用 META 元素,以在該網頁中包含 X-UA-Compatible http-equiv 標頭。如下示例指定了 EmulateIE7 模式兼容性。app
HTML:測試
<html> <head> <!-- Mimic Internet Explorer 7 --> <title>個人網頁</title> <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> </head> <body> <p>內容在此處。</p> </body></html>
Content 屬性指定了該頁面的模式;例如,要模仿 Windows Internet Explorer 7 的行爲,請指定 IE=EmulateIE7。一樣,可指定 IE=五、IE=7 或 IE=8 以選擇其中一種兼容性模式。您還能夠指定 IE=edge 以通知 Windows Internet Explorer 8 使用最高級別的可用模式。
X-UA-compatible 標頭不區分大小寫;可是,它必須顯示在網頁中除 TITLE 和其餘 META 元素之外的全部元素以前的標頭(HEAD 部分)中。 (小影試了下,好像沒有用)
經過使用 Web 服務器爲站點定義自定義 HTTP 響應標頭,可爲網站指定文本模式。HTTP 響應標頭是 Web 服務器附加到爲響應 HTTP 請求而發送到瀏覽器中的文件的信息,這些信息一般包含發送迴文件的日期、大小和類型。
下列文檔介紹了將 Web 服務器配置爲將自定義 HTTP 響應標頭附加到全部網頁中所需的步驟。這將致使 Windows Internet Explorer 8 使用指定的文本兼容性模式,例如 EmulateIE7。
若是使用 Web 服務器指定了默認文本兼容性模式,則可經過在特定的網頁中指定其餘文本兼容性模式來覆蓋該設置。在該網頁中指定的模式優先於由服務器指定的模式。
要使用 Windows Internet Explorer 8 肯定網頁的文本兼容性模式,請使用 document 對象的 documentMode 屬性。例如,將如下內容鍵入到 Windows Internet Explorer 8 的地址欄中,可顯示當前網頁的文本模式。
javascript:alert(document.documentMode);
documentMode 屬性可返回與頁面的文本兼容性模式相對應的數值。例如,若是所選頁面支持 IE8 模式,則 documentMode 會返回 8。
注意:在 Windows Internet Explorer 6 中引入的 compatMode 屬性已不受支持,取而代之的是在 Windows Internet Explorer 8 中引入的 documentMode 屬性。當前使用 compatMode 的應用程序仍然能夠在 Windows Internet Explorer 8 中運行;可是,它們已更新爲使用 documentMode。
若是但願使用 JavaScript 肯定文本的兼容性模式,請在其中包含支持 Windows Internet Explorer 舊版本的代碼,如如下示例所示。
JScript:
engine = null;if (window.navigator.appName == "Microsoft Internet Explorer") { // 這是一個 IE 瀏覽器。引擎處於哪一種模式下? if (document.documentMode) // IE8 engine = document.documentMode; else // IE 5-7 { engine = 5; // 假設爲 quirks 模式;除非另外證明是其餘模式 if (document.compatMode) { if (document.compatMode == "CSS1Compat") engine = 7; // 標準模式 } } // 引擎變量如今包含文本兼容性模式。}
此處使用的文檔對象表示給定瀏覽器窗口中的 HTML 文檔,可用來檢查、修改 HTML 文檔或將內容添加到該文檔以及處理該文檔中的事件。
若是隻須要適應 Windows Internet Explorer,如下代碼示例說明了如何使用條件註釋來適用於當前版本或舊版本。
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Strict//EN"><html> <head> <title>測試頁</title> <meta http-equiv="X-UA-Compatible" content="IE=8"/> <!--[if gte IE 8]> <style type="text/css"> body { color:#0000ff; background-color:#000000; } </style> <![endif]--> <!--[if lt IE 8]> <style type="text/css"> body { color:#000000; background-color:#ffffff; } </style> <![endif]--> </head> <body> <h1> <!--[if gte IE 8]> 第 1 章。 <![endif]--> 第一章 </h1> <h1> <!--[if gte IE 8]> 第 2 章。 <![endif]--> 第二章 </h1> 將看到任何版本的文本。 </body>