自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

深入剖析IE8文件兼容性問題

開發(fā) 前端
IE8文件兼容性用于定義讓IE如何編譯你的網(wǎng)頁。本文向大家解釋一下IE8文件兼容性,如何指定你網(wǎng)站的IE8文件兼容性模式以及如何判斷一個(gè)網(wǎng)頁該使用的文件模式。

本文向大家描述一下IE8樣式兼容性適應(yīng)方法,為了幫助確保你的網(wǎng)頁在所有未來的IE版本都有一致的外觀,IE8引入了IE8文件兼容性。在IE6中引入一個(gè)增設(shè)的兼容性模式,IE8文件兼容性使你能夠在IE呈現(xiàn)你的網(wǎng)頁時(shí)選擇特定編譯模式。

IE8樣式兼容性適應(yīng)方法

IE8文件兼容性用于定義讓IE如何編譯你的網(wǎng)頁。本文向大家解釋一下IE8文件兼容性,如何指定你網(wǎng)站的IE8文件兼容性模式以及如何判斷一個(gè)網(wǎng)頁該使用的文件模式。

前言

為了幫助確保你的網(wǎng)頁在所有未來的IE版本都有一致的外觀,IE8引入了IE8文件兼容性。在IE6中引入一個(gè)增設(shè)的兼容性模式,IE8文件兼容性使你能夠在IE呈現(xiàn)你的網(wǎng)頁時(shí)選擇特定編譯模式。

新的IE為了確保網(wǎng)頁在未來的版本中都有一支的外觀,IE8引入了IE8文件兼容性。當(dāng)你引入一個(gè)增設(shè)的兼容性模式,此文章說明IE8文件兼容性的必要性,列出現(xiàn)有版本IE能使用的IE8文件兼容性模式并示范如何選擇特定的兼容性模式。

了解IE8文件兼容性的必要性

每個(gè)主要版本IE新增的功能都是為了讓瀏覽器更容易使用、增加安全性及更支持業(yè)界標(biāo)準(zhǔn)。以這些作為IE的特色,其中一個(gè)風(fēng)險(xiǎn)就是舊版本網(wǎng)站無法正確的顯示。

為了將這個(gè)風(fēng)險(xiǎn)降到***,IE6允許網(wǎng)頁開發(fā)人員選擇IE編譯和顯示他們網(wǎng)頁的方式。"Quirksmode"為預(yù)設(shè),這會(huì)使頁面以舊版本瀏覽器的視點(diǎn)顯示,"Standardsmode"(也稱為"strictmode")特點(diǎn)是支持業(yè)界標(biāo)準(zhǔn)最為完善。然而要利用這個(gè)增強(qiáng)的支持功能,網(wǎng)頁必須包含恰當(dāng)?shù)?lt;!DOCTYPE>指令。

若一個(gè)網(wǎng)頁沒有包含<!DOCTYPE>指令,IE6會(huì)將它以quirksmode顯示。若網(wǎng)頁包含有效的<!DOCTYPE>指令但瀏覽器無法辨識(shí),IE6會(huì)將它以IE6standardsmode顯示。因?yàn)樯贁?shù)網(wǎng)站已經(jīng)包含<!DOCTYPE>指令,兼容性模式的切換相當(dāng)成功。這使網(wǎng)頁開發(fā)人員能選擇將他們的網(wǎng)頁轉(zhuǎn)移為standardsmode的***時(shí)機(jī)。

隨著時(shí)間經(jīng)過,更多網(wǎng)站開始使用standardsmode。它們也開始使用IE6的特性和功能來檢測(cè)IE。舉例來說,IE6不支持universalselector(即css之全局選擇器*{}),一些網(wǎng)站便使用它來針對(duì)IE做特定的對(duì)應(yīng)。

當(dāng)IE7增加了對(duì)全域選擇器的支持,那些依賴IE6特點(diǎn)的網(wǎng)站便無法偵測(cè)出這個(gè)新版本的瀏覽器。因此那些針對(duì)IE的特定對(duì)應(yīng)無法應(yīng)用于IE7,造成這些網(wǎng)站便無法如他們預(yù)期的顯示。由于<!DOCTYPE>只支持兩種兼容性模式,受到影響的網(wǎng)站擁有者被迫更新他們的網(wǎng)站使其能支持IE7。

IE8比之前的任何版本瀏覽器都更支持業(yè)界標(biāo)準(zhǔn),因此針對(duì)舊版本瀏覽器設(shè)計(jì)的網(wǎng)頁可能無法如預(yù)期般呈現(xiàn)。為了幫助減輕所有問題,IE8引入IE8文件兼容性的概念,使你能選擇你的網(wǎng)頁設(shè)計(jì)要對(duì)應(yīng)的特定IE版本。IE8文件兼容性在IE8增加了一些新的模式,這些模式能告訴瀏覽器如何解析和編譯一個(gè)網(wǎng)頁。若你的網(wǎng)頁無法在ie8正確的顯示,你可以更新你的網(wǎng)站使它支持***的網(wǎng)頁標(biāo)準(zhǔn)(優(yōu)先選項(xiàng))或在你的頁面上新增一個(gè)meta元素用于告訴IE8如何依照舊版本瀏覽器編譯你的頁面。這能讓你選擇將你的網(wǎng)站更新支持IE8新特點(diǎn)的時(shí)機(jī)。

認(rèn)識(shí)IE8文件兼容性模式

IE8支持幾種IE8文件兼容性模式,它們具有不同的特性并影響內(nèi)容顯示的方式。

◆-EmulateIE8mode指示IE使用<!DOCTYPE>指令來決定如何編譯內(nèi)容。Standardsmode指令會(huì)顯示成IE8Standardsmode而quirksmode會(huì)顯示成IE5mode。不同于IE8mode,EmulateIE8mode重視<!DOCTYPE>指令。

◆-EmulateIE7mode指示IE使用<!DOCTYPE>指令來決定如何編譯內(nèi)容。Standardsmode指令會(huì)顯示成IE7Standardsmode而quirksmode會(huì)顯示成IE5mode。不同于IE7mode,EmulateIE7mode重視<!DOCTYPE>指令。對(duì)于許多網(wǎng)頁來說這是最推薦的兼容性模式。
-IE5mode編譯內(nèi)容如同IE7的quirksmode之顯示狀況,和IE5中顯示的非常類似。

◆-IE7mode編譯內(nèi)容如同IE7的standardsmode之顯示狀況,無論網(wǎng)頁是否含有<!DOCTYPE>指令。

◆-IE8mode提供對(duì)業(yè)界標(biāo)準(zhǔn)的***支持,包含W3CCascadingStyleSheetsLevel2.1Specification和W3CSelectorsAPI,并有限的支持W3CCascadingStyleSheetsLevel3Specification(WorkingDraft)。

◆-Edgemode指示IE以目前可用的***模式顯示內(nèi)容。當(dāng)使用IE8時(shí)其等同于IE8mode。若(假定)未來放出支持更高兼容性模式的IE,使用Edgemode的頁面會(huì)使用該版本能支持的***模式來顯示內(nèi)容。同樣的那些頁面在使用IE8瀏覽時(shí)仍會(huì)照常顯示。

由于edgemode使用該IE版本所能支持的***模式來顯示所瀏覽的網(wǎng)頁內(nèi)容,建議僅使用于測(cè)試頁及其他非商用頁面。#p#

指定IE8文件兼容性模式

要為你的網(wǎng)頁指定文件模式,需要在你的網(wǎng)頁中使用meta元素放入X-UA-Compatiblehttp-equiv標(biāo)頭。以下是指定為EmulateIE7mode兼容性之范例。

  1. <html> 
  2. <head> 
  3. <!--MimicInternetExplorer7--> 
  4. <metahttp-equivmetahttp-equiv="X-UA-Compatible"content="IE=EmulateIE7"/> 
  5. <title>MyWebPage</title> 
  6. </head> 
  7. <body> 
  8. <p>Contentgoeshere.</p> 
  9. </body> 
  10. </html> 
  11.  

其內(nèi)容隨著指定的頁面模式而更改,當(dāng)要模擬IE7時(shí),指定IE=EmulateIE7,指定IE=5,IE=7,或IE=8來選擇其中一種兼容性模式。你也可以指定IE=edge來指示IE8使用它支持的***模式。

X-UA-compatible標(biāo)頭沒有大小寫之分。然而除了title元素及其他的meta元素之外,它必須出現(xiàn)在網(wǎng)頁header節(jié)其它元素之前的位置,

設(shè)定網(wǎng)站服務(wù)器以指定預(yù)設(shè)兼容性模式

網(wǎng)站管理員可籍著為網(wǎng)站定義一個(gè)自訂標(biāo)頭來為他們的網(wǎng)站預(yù)設(shè)一個(gè)特定的IE8文件兼容性模式。這個(gè)特定的方法取決于你的網(wǎng)站服務(wù)器。舉例來說,下列的web.config文件使MicrosoftInternetInformationServices(IIS)能定義一個(gè)自訂標(biāo)頭以自動(dòng)使用IE7mode來編譯所有網(wǎng)頁。

  1. <?xmlversionxmlversion="1.0"encoding="utf-8"?> 
  2. <configuration> 
  3. <system.webServer> 
  4. <httpProtocol> 
  5. <customHeaders> 
  6. <clear/> 
  7. <addnameaddname="X-UA-Compatible"value="IE=EmulateIE7"/> 
  8. </customHeaders> 
  9. </httpProtocol> 
  10. </system.webServer> 
  11. </configuration> 
  12.  

若你已于網(wǎng)站服務(wù)器指定了一個(gè)預(yù)設(shè)的IE8文件兼容性模式,你可以在個(gè)別頁面上指定不同的IE8文件兼容性模式來蓋過它。在網(wǎng)頁中指定的模式優(yōu)先權(quán)高于服務(wù)器中所指定的模式。

判定IE8文件兼容性模式

要判定網(wǎng)頁使用IE8瀏覽時(shí)的IE8文件兼容性模式,使用documentobject(文檔對(duì)象)的documentMode功能。例如在IE8的網(wǎng)址列輸入下列程式碼會(huì)顯示目前頁面的文件模式。

  1. javascript:alert(document.documentMode);  
  2.  

documentMode功能會(huì)回傳一個(gè)數(shù)值對(duì)應(yīng)目前頁面的IE8文件兼容性模式,舉例來說,若網(wǎng)頁指定為支持IE8模式,documentMode便會(huì)回傳值"8"。

在IE6引入的compatMode功能不支持在IE8引入的documentMode功能。目前使用compatMode建立的應(yīng)用程式還能在IE8中作用,但它們必須更新為使用documentMode。

若你希望使用JavaScript判定一個(gè)文件的兼容性模式,引入下面范例的這段程式碼可支持舊版本的IE。

  1. engine=null;  
  2. if(window.navigator.appName=="MicrosoftInternetExplorer")  
  3. {  
  4. //ThisisanIEbrowser.Whatmodeistheenginein?  
  5. if(document.documentMode)//IE8  
  6. engine=document.documentMode;  
  7. else//IE5-7  
  8. {  
  9. engine=5;//Assumequirksmodeunlessprovenotherwise  
  10. if(document.compatMode)  
  11. {  
  12. if(document.compatMode=="CSS1Compat")  
  13. engine=7;//standardsmode  
  14. }  
  15. }  
  16. //theenginevariablenowcontainsthedocumentcompatibilitymode.  
  17. }  
  18.  

 #p#認(rèn)識(shí)內(nèi)容屬性值

內(nèi)容屬性值在接收到異于先前敘述的數(shù)值時(shí)是具有彈性的。這能使你對(duì)于IE如何顯示你的網(wǎng)頁更有操控性。舉例來說,你可以設(shè)定內(nèi)容屬性值為IE=7.5。當(dāng)你這樣做的時(shí)候,IE嘗試將這個(gè)值轉(zhuǎn)換為versionvector并選擇最接近的結(jié)果。在這個(gè)例子中,IE會(huì)將其設(shè)定為IE7mode。下面的范例顯示該模式設(shè)定為其他值的狀況。

  1. <metahttp-equivmetahttp-equiv="X-UA-Compatible"content="IE=4"><!--IE5mode--> 
  2. <metahttp-equivmetahttp-equiv="X-UA-Compatible"content="IE=7.5"><!--IE7mode--> 
  3. <metahttp-equivmetahttp-equiv="X-UA-Compatible"content="IE=100"><!--IE8mode--> 
  4. <metahttp-equivmetahttp-equiv="X-UA-Compatible"content="IE=a"><!--IE5mode--> 
  5.  
  6. <!--ThisheadermimicsInternetExplorer7anduses  
  7. <!DOCTYPE>todeterminehowtodisplaytheWebpage--> 
  8. <metahttp-equivmetahttp-equiv="X-UA-Compatible"content="IE=EmulateIE7"> 
  9.  

注意:前面的范例顯示單獨(dú)的內(nèi)容值。實(shí)際上IE只會(huì)執(zhí)行網(wǎng)頁中***個(gè)X-UA-Compatible標(biāo)頭。

你也可以使用內(nèi)容屬性來指定復(fù)數(shù)的IE8文件兼容性模式,這能幫助確保你的網(wǎng)頁在未來的瀏覽器版本都能一致的顯示。欲設(shè)定復(fù)數(shù)的文件模式,請(qǐng)?jiān)O(shè)定內(nèi)容屬性以判別你想使用的模式。使用分號(hào)來分開各個(gè)模式。

如果一個(gè)特定版本的IE支持所要求的兼容性模式多于一種,將採用列于標(biāo)頭內(nèi)容屬性中***的可用模式。你可以使用這個(gè)特性來排除特定的兼容性模式,雖然并不推薦這樣做。舉例來說,下列標(biāo)頭即會(huì)排除IE7mode。

  1. <metahttp-equivmetahttp-equiv="X-UA-Compatible"content="IE=5;IE=8"/> 
  2.  

結(jié)論

兼容性對(duì)于網(wǎng)頁設(shè)計(jì)師來說是非常重要的顧慮。雖然***是可以建立一個(gè)完全不需依賴任何網(wǎng)頁瀏覽器特性或功能的網(wǎng)站,有時(shí)候這是不可能實(shí)現(xiàn)的。IE8文件兼容性模式便能將網(wǎng)頁限制在某個(gè)特定版本的IE中。

使用X-UA-Compatible標(biāo)頭來指定你的頁面支持的IE版本。使用document.documentMode判定頁面的兼容性模式。

選擇支持某個(gè)特定版本的IE,你可以確保你的頁面在未來的瀏覽器版本中也能有顯示的一致性。
 

【編輯推薦】

  1. IE8文件兼容性問題詳解
  2. JavaScript代碼輕松實(shí)現(xiàn)DIV圓角
  3. 網(wǎng)頁排版中IE6,IE7,F(xiàn)irefox瀏覽器兼容性寫法
  4. CSS屬性display:inline-block使用揭秘
  5. Firefox、IE7、IE6瀏覽器兼容問題概念解析

 

 

責(zé)任編輯:佚名 來源: csdn.net
相關(guān)推薦

2010-08-17 14:51:05

IE8兼容性

2010-09-15 10:14:19

IE7IE8兼容CSS

2010-09-15 10:32:54

IE8兼容

2010-08-17 16:50:30

JSIE6IE8

2010-08-17 15:33:28

CSS兼容IE7IE8

2010-08-17 14:22:51

IE8兼容性

2009-03-21 10:19:43

微軟瀏覽器IE8

2010-09-15 09:21:11

IEirefoxJavascript

2010-10-09 15:22:25

IE7.JS

2010-08-20 14:27:23

IE火狐CSS

2010-09-15 11:26:05

IE火狐CSS兼容性

2010-08-23 09:23:48

IEFirefox兼容性

2010-09-15 10:25:18

IE7IE8CSS兼容性

2010-08-18 09:24:09

IE6兼容性

2010-09-16 13:33:47

IE6IE7IE8

2010-08-17 15:38:49

CSS兼容IE7IE8

2010-08-17 15:58:01

IE8兼容性視圖

2010-09-30 14:23:19

IE7 JS Libr

2010-09-15 11:32:37

IE6IE7瀏覽器兼容性

2010-09-30 14:29:14

IE7.JS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)