《讓IE8自動使用兼容模式顯示網(wǎng)》由會員分享,可在線閱讀,更多相關《讓IE8自動使用兼容模式顯示網(wǎng)(9頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、讓IE8自動使用兼容模式顯示網(wǎng)頁
刊登于887 天前 ? Web前端 ? 暫無評論 ? 被圍觀 2,399+
文獻兼容性用于定義讓IE如何編譯你的網(wǎng)頁。此文獻解釋文獻兼容性,如何指定你網(wǎng)站的文獻兼容性模式以及如何判斷一種網(wǎng)頁該使用的文獻模式。
前言
為了協(xié)助保證你的網(wǎng)頁在所有將來的IE版本均有一致的外觀,IE8引入了文獻兼容性。在IE6中引入一種增設的兼容性模式,文獻兼容性使你可以在IE呈現(xiàn)你的網(wǎng)頁時選擇特定編譯模式。
新的IE為了保證網(wǎng)頁在將來的版本中均有一支的外觀,IE8引入了文獻兼容性。當你引入一種增設的兼容性模式,
此文章闡明文獻兼容性的必要性,列浮既有版本IE能使用的文
2、獻兼容性模式并示范如何選擇特定的兼容性模式。
理解文獻兼容性的必要性
每個重要版本IE新增的功能都是為了讓瀏覽器更容易使用、增長安全性及更支持業(yè)界原則。以這些作為IE的特色,其中一種風險就是舊版本網(wǎng)站無法對的的顯示。
為了將這個風險降到最低,IE6容許網(wǎng)頁開發(fā)人員選擇IE編譯和顯示她們網(wǎng)頁的方式。"Quirks mode"為預設,這會使頁面以舊版本瀏覽器的視點顯示,"Standards mode"(也稱為"strict mode")特點是支持業(yè)界原則最為完善。然而要運用這個增強的支持功能,網(wǎng)頁必須涉及恰當?shù)?!DOCTYPE>指令。
若一種網(wǎng)頁沒有涉及指令,IE6會
3、將它以quirks mode顯示。若網(wǎng)頁包具有效的指令但瀏覽器無法辨識,IE6會將它以IE6 standards mode顯示。由于少數(shù)網(wǎng)站已經(jīng)涉及指令,兼容性模式的切換相稱成功。這使網(wǎng)頁開發(fā)人員能選擇將她們的網(wǎng)頁轉移為standards mode的最佳時機。
隨著時間通過,更多網(wǎng)站開始使用standards mode。它們也開始使用IE6的特性和功能來檢測IE。舉例來說,IE6不支持universal selector(即css之全局選擇器 * {}),某些網(wǎng)站便使用它來針對IE做特定的相應。
當 IE7增長了對全域選擇器的支持,那些依賴IE6特點
4、的網(wǎng)站便無法偵測出這個新版本的瀏覽器。因此那些針對IE的特定相應無法應用于IE7,導致這些網(wǎng)站便無法如她們預期的顯示。由于只支持兩種兼容性模式,受到影響的網(wǎng)站擁有者被迫更新她們的網(wǎng)站使其能支持IE7。
IE8 比之前的任何版本瀏覽器都更支持業(yè)界原則,因此針對舊版本瀏覽器設計的網(wǎng)頁也許無法如預期般呈現(xiàn)。為了協(xié)助減輕所有問題,IE8引入文獻兼容性的概念,使你能選擇你的網(wǎng)頁設計要相應的特定IE版本。文獻兼容性在IE8增長了某些新的模式,這些模式能告訴瀏覽器如何解析和編譯一種網(wǎng)頁。若你的網(wǎng)頁無法在 ie8對的的顯示,你可以更新你的網(wǎng)站使它支持最新的網(wǎng)頁原則(優(yōu)先選項)或在你的頁面
5、上新增一種meta元素用于告訴IE8如何根據(jù)舊版本瀏覽器編譯你的頁面。
這能讓你選擇將你的網(wǎng)站更新支持IE8新特點的時機。
結識文獻兼容性模式
IE8支持幾種文獻兼容性模式,它們具有不同的特性并影響內(nèi)容顯示的方式。
?Emulate IE8 mode批示IE使用指令來決定如何編譯內(nèi)容。Standards mode指令會顯示成IE8 Standards mode而quirks mode會顯示成IE5 mode。不同于IE8 mode,Emulate IE8 mode注重指令。
?Emulate IE7 mode批示IE使用指令
6、來決定如何編譯內(nèi)容。Standards mode指令會顯示成IE7 Standards mode而quirks mode會顯示成IE5 mode。不同于IE7 mode,Emulate IE7 mode注重指令。對于許多網(wǎng)頁來說這是最推薦的兼容性模式。
?IE5 mode 編譯內(nèi)容猶如IE7的quirks mode之顯示狀況,和IE5中顯示的非常類似。
?IE7 mode編譯內(nèi)容猶如IE7的standards mode之顯示狀況,無論網(wǎng)頁與否具有指令。
?IE8 mode提供對業(yè)界原則的最高支持,涉及 W3C Cascading Style She
7、ets Level 2.1 Specification和W3C Selectors API,并有限的支持 W3C Cascading Style Sheets Level 3 Specification (Working Draft)。
?Edge mode批示IE以目前可用的最高模式顯示內(nèi)容。當使用IE8時其等同于IE8 mode。若(假定)將來放出支持更高兼容性模式的IE,使用Edge mode的頁面會使用該版本能支持的最高模式來顯示內(nèi)容。同樣的那些頁面在使用IE8瀏覽時仍會照常顯示。
由于edge mode使用該IE版本所能支持的最高模式來顯示所瀏覽的網(wǎng)頁內(nèi)容,建議僅使用于測試頁及其
8、她非商用頁面。
指定文獻兼容性模式
要為你的網(wǎng)頁指定文獻模式,需要在你的網(wǎng)頁中使用meta元素放入X-UA-Compatible?http-equiv?標頭。如下是指定為Emulate IE7 mode 兼容性之范例。
?
??
??
??
My?Web?Page
??
Content?goes?
9、here.
?
其內(nèi)容隨著指定的頁面模式而更改,當要模擬IE7時,指定IE=EmulateIE7,指定IE=5, IE=7, 或IE=8來選擇其中一種兼容性模式。你也可以指定IE=edge來批示IE8使用它支持的最高模式。
X-UA-compatible標頭沒有大小寫之分。然而除了title元素及其她的meta元素之外,它必須出目前網(wǎng)頁header節(jié)其他元素之前的位置,
設定網(wǎng)站服務器以指定預設兼容性模式
網(wǎng)站管理員可籍著為網(wǎng)站定義一種自訂標頭來為她們的網(wǎng)站預設一種特定的文獻兼容性模式。這個特定的措施取決于你的網(wǎng)站服務器。舉例來說,下列的web
10、.config文獻使Microsoft Internet Information Services (IIS)能定義一種自訂標頭以自動使用IE7 mode來編譯所有網(wǎng)頁。
?
??
????
??????
????????
????????
??????<
11、/customHeaders>
????
??
?
若你已于網(wǎng)站服務器指定了一種預設的文獻兼容性模式,你可以在個別頁面上指定不同的文獻兼容性模式來蓋過它。在網(wǎng)頁中指定的模式優(yōu)先權高于服務器中所指定的模式。
請查閱你的網(wǎng)站服務器有關指定自訂標頭的資訊,或看更多資料:
Implementing the META Switch on Apache
Implementing the META Switch on IIS
鑒定文獻兼容性模式
要鑒定網(wǎng)頁使用IE8瀏覽時的文獻兼容性模式,使
12、用document object(文檔對象)的documentMode功能。例如在IE8的網(wǎng)址列輸入下列程式碼會顯示目前頁面的文獻模式。
javascript:alert(document.documentMode);
?
documentMode功能會回傳一種數(shù)值相應目前頁面的文獻兼容性模式,舉例來說,若網(wǎng)頁指定為支持IE8模式,documentMode便會回傳值"8"。
在IE6引入的compatMode功能不支持在IE8引入的documentMode功能。目前使用compatMode建立的應用程式還能在IE8中作用,但它們必須更新為使用documentMode。
若你但愿使用J
13、avaScript鑒定一種文獻的兼容性模式,引入下面范例的這段程式碼可支持舊版本的IE。
?
engine?=?null;
if?(window.navigator.appName?==?"Microsoft?Internet?Explorer")
{
???//?This?is?an?IE?browser.?What?mode?is?the?engine?in?
???if?(document.documentMode)?//?IE8
??????engine?=?document.documentMode;
???else?//?IE?5-7
???{
??????en
14、gine?=?5;?//?Assume?quirks?mode?unless?proven?otherwise
??????if?(patMode)
??????{
?????????if?(patMode?==?"CSS1Compat")
????????????engine?=?7;?//?standards?mode
??????}
???}
???//?the?engine?variable?now?contains?the?document?compatibility?mode.
}
?
?
結識內(nèi)容屬性值
內(nèi)容屬性值在接受到異于先前論述的數(shù)值時是具有彈性的。
15、這能使你對于IE如何顯示你的網(wǎng)頁更有操控性。舉例來說,你可以設定內(nèi)容屬性值為IE=7.5。當你這樣做的時候,IE嘗試將這個值轉換為version vector并選擇最接近的成果。在這個例子中,IE會將其設定為IE7 mode。下面的范例顯示該模式設定為其她值的狀況。
?
???
?
16、X-UA-Compatible"?content="IE=100">?
????注意: 前面的范例顯示單獨的內(nèi)容值。事實上IE只會執(zhí)行網(wǎng)頁中第一種X-UA-Compatible標頭。
你也可以使用內(nèi)容屬性來指定復數(shù)的文獻兼容性模式,這能協(xié)助保證你的網(wǎng)頁在將來的瀏覽器版本都能一致的顯示。欲設定復數(shù)的文獻模式,請設定內(nèi)容屬性以鑒別你想使用的模式。使用分號來分開各個模式。
如果一種特定版本的IE支持所規(guī)定的兼容性模式多于一種,
17、將採用列于標頭內(nèi)容屬性中最高的可用模式。你可以使用這個特性來排除特定的兼容性模式,雖然并不推薦這樣做。舉例來說,下列標頭即會排除IE7 mode。
?
?
結論
兼容性對于網(wǎng)頁設計師來說是非常重要的顧慮。雖然最佳是可以建立一種完全不需依賴任何網(wǎng)頁瀏覽器特性或功能的網(wǎng)站,有時候這是不也許實現(xiàn)的。文獻兼容性模式便能將網(wǎng)頁限制在某個特定版本的IE中。
使用X-UA-Compatible標頭來指定你的頁面支持的IE版本。使用document.documentMode鑒定頁面的兼容性模式。
選擇支持某個特定版本的IE,你可以保證你的頁面在將來的瀏覽器版本中也能有顯示的一致性。
??