當項目需求需要兼容ie7,8這些奇葩瀏覽器時,考慮到h5的便捷性及響應式,我們往往引入html5shiv.js和respond.js來讓ie7,8兼容h5及一些響應式變化,引入時就需要用到條件注釋,原來寫條件注釋要么copy其他項目上的,要么隨便寫寫,從沒當回事,也沒注意格式上有什么要求,下面來看看因為條件注釋引起的大麻煩。
//css <style> header { width:100px; height:100px; color:red; background:#ccc; } </style> //html <header> hello world! </header>
看上面的代碼,我們可以想象出來如果引入正確ie8下,應該是灰色背景下小紅字,先來看下正確的效果

下面來看下各種錯誤引入html5shiv.js的條件注釋語句及帶來的后果(ie8下測試)
<!-- [if lt ie 9]> <script src="lib/html5shiv/html5shiv.js"></script> <![endif]-->
看條件注釋語句似乎沒什么不妥,看效果

怎么沒效果???F12看控制台

header標簽未識別,坑爹啊,看起來沒錯啊,換html5shiv.js版本,換cdn統統沒用,再仔細檢查發現在中括號前多了個空格,把空格去掉,效果變正常。還有在中括號之后加空格會引起異常,中括號里面ie和9之間一定要加空格不然也會異常。看似漫不經心的一個小空格也會引起大錯誤,用條件注釋時一定要嚴格地按照格式來寫如下:
<!--[if lt ie 9]> <![endif]-->
