原文:Ultimate IE6 Cheatsheet: How To Fix 25+ Internet Explorer 6 Bugs 翻譯:http://www.vfresh.org/w3c/727(譯文對原文進(jìn)行了補(bǔ)充)
兼容IE6的第一步就是單獨(dú)對IE進(jìn)行兼容,你針對IE6所寫的代碼只影響IE6;有幾種方法可以區(qū)分開IE6:IE特有條件注釋、CSS選擇器、JavaScript,我們將逐一討論。
使用IE特有條件注釋
微軟給IE添加了條件注釋以區(qū)分不同版本,任何東西都可以塞進(jìn)條件注釋里:標(biāo)簽、JavaScript、js文件、css、內(nèi)聯(lián)樣式。可以使用條件注釋來針對某一個(gè)IE瀏覽器版本來編寫代碼。
規(guī)則如下:(譯注:可參考IE 特有注釋(hack))
運(yùn)行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]
使用條件注釋加載css的好處是這些樣式是獨(dú)立于其他css文件的,因此不會在編寫兼容代碼時(shí)弄得一團(tuán)糟;而且當(dāng)IE6的市場份額降低到不需要兼容時(shí),可以快速的清理掉。
使用條件注釋的唯一缺點(diǎn)是在IE瀏覽器下會增加額外的HTTP請求數(shù),所以需要權(quán)衡是否這樣做。但我不建議使用條件注釋加載外部js文件,因?yàn)閖s文件會造成阻滯,在js未加載完之前其余文件都不會被加載;對于js請使用JavaScript程序來區(qū)分瀏覽器而非條件注釋。
使用CSS選擇器區(qū)分開IE6
如果你不打算使用條件注釋,CSS選擇器是另外一個(gè)區(qū)分開IE6的辦法,IE6不支持子選擇器;先針對IE6使用常規(guī)申明CSS選擇器,然后再用子選擇器針對IE7+及其他瀏覽器。
示例:
運(yùn)行代碼框
[Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]
這個(gè)方法的缺點(diǎn)是容易把樣式表弄得一團(tuán)糟,所以一定要寫好注釋說明。 在示例中,針對IE6寫的樣式在其他瀏覽器中也會執(zhí)行,但(標(biāo)準(zhǔn)瀏覽器中)之后的子選擇器覆蓋了之前的申明,而IE6不支持子選擇器所以忽略了它。
擴(kuò)展閱讀:
使用JavaScript區(qū)分開IE6
如果你想要使用JavaScript區(qū)分開IE6,請看示例:
//原生JavaScript if(typeof document.body.style.maxHeight === "undefined") { alert('IE6 Detected'); } //MooTools(框架) if (Browser.Engine.trident4) { alert('IE6 Detected'); } //jQuery(框架) if (($.browser.msie) && ($.browser.version == "6.0")){ alert('IE6 Detected'); }
擴(kuò)展閱讀:
經(jīng)典論壇交流: http://bbs.blueidea.com/thread-2965546-1-1.html
本文鏈接:http://m.95time.cn/tech/web/2010/7357.asp
出處:藍(lán)色理想
責(zé)任編輯:bluehearts
◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。
|