單獨(dú)對(duì)IE6兼容進(jìn)行處理的方法揭秘
你對(duì)單獨(dú)對(duì)IE6兼容進(jìn)行處理的方法是否了解,這里和大家分享一下,IE6兼容的***步就是單獨(dú)對(duì)IE進(jìn)行兼容,你針對(duì)IE6所寫(xiě)的代碼只影響IE6。
單獨(dú)對(duì)IE6兼容進(jìn)行處理的方法
IE6兼容的***步就是單獨(dú)對(duì)IE進(jìn)行兼容,你針對(duì)IE6所寫(xiě)的代碼只影響IE6;有幾種方法可以區(qū)分開(kāi)IE6:IE特有條件注釋、CSS選擇器、JavaScript,我們將逐一討論。
使用IE特有條件注釋
微軟給IE添加了條件注釋以區(qū)分不同版本,任何東西都可以塞進(jìn)條件注釋里:標(biāo)簽、JavaScript、js文件、css、內(nèi)聯(lián)樣式??梢允褂脳l件注釋來(lái)針對(duì)某一個(gè)IE瀏覽器版本來(lái)編寫(xiě)代碼。
規(guī)則如下:(譯注:可參考IE特有注釋(hack))
這段文字會(huì)在所有瀏覽器顯示
- <!--[iflteIE6]>
這段文字僅顯示在IE6及IE6以下版本。
- ThismessagewillonlyappearinversionsofInternetExplorerlessthanorequaltoversion6.
- <![endif]-->
- <!--[ifgteIE6]>
這段文字僅顯示在IE6及IE6以上版本。
- ThismessagewillonlyappearinversionsofInternetExplorergreaterthanorequaltoversion6.
- <![endif]-->
- <!--[ifgtIE6]>
這段文字僅顯示在IE6以上版本(不包含IE6)。
- ThismessagewillonlyappearinversionsofInternetExplorergreaterthanversion6.
- <![endif]-->
- <!--[ifIE5.5]>
這段文字僅顯示在IE5.5。
- ThismessagewillonlyappearinInternetExplorer5.5.
- <![endif]-->
- <!--在IE6及IE6以下版本中加載css-->
- <!--[iflteIE6]>
- [*]
- <![endif]-->
這段文字會(huì)在所有瀏覽器顯示
使用條件注釋加載css的好處是這些樣式是獨(dú)立于其他css文件的,因此不會(huì)在編寫(xiě)兼容代碼時(shí)弄得一團(tuán)糟;而且當(dāng)IE6的市場(chǎng)份額降低到不需要兼容時(shí),可以快速的清理掉。
使用條件注釋的***缺點(diǎn)是在IE瀏覽器下會(huì)增加額外的HTTP請(qǐng)求數(shù),所以需要權(quán)衡是否這樣做。但我不建議使用條件注釋加載外部js文件,因?yàn)閖s文件會(huì)造成阻滯,在js未加載完之前其余文件都不會(huì)被加載;對(duì)于js請(qǐng)使用JavaScript程序來(lái)區(qū)分瀏覽器而非條件注釋。
使用CSS選擇器區(qū)分開(kāi)IE6
如果你不打算使用條件注釋?zhuān)珻SS選擇器是另外一個(gè)區(qū)分開(kāi)IE6的辦法,IE6兼容不支持子選擇器;先針對(duì)IE6使用常規(guī)申明CSS選擇器,然后再用子選擇器針對(duì)IE7+及其他瀏覽器。
示例:
- <styletypestyletype="text/css">
- /*IE6專(zhuān)用*/
- .content{color:red;}
- /*其他瀏覽器*/
- div>p.content{color:blue;}
- </style>
- <div>
- <pclasspclass="header">SomeHeaderTextHere
- </div>
這個(gè)方法的缺點(diǎn)是容易把樣式表弄得一團(tuán)糟,所以一定要寫(xiě)好注釋說(shuō)明。
在示例中,針對(duì)IE6寫(xiě)的樣式在其他瀏覽器中也會(huì)執(zhí)行,但(標(biāo)準(zhǔn)瀏覽器中)之后的子選擇器覆蓋了之前的申明,而IE6兼容不支持子選擇器所以忽略了它。
使用JavaScript區(qū)分開(kāi)IE6
如果你想要使用JavaScript區(qū)分開(kāi)IE6,請(qǐng)看示例:
- //原生JavaScript
- if(typeofdocument.body.style.maxHeight==="undefined"){
- alert('IE6Detected');
- }
- //MooTools(框架)
- if(Browser.Engine.trident4){
- alert('IE6Detected');
- }
- //jQuery(框架)
- if(($.browser.msie)&&($.browser.version=="6.0")){
- alert('IE6Detected');
- }
譯者來(lái)源:http://www.vfresh.org/w3c/727
【編輯推薦】