當項目需求須要兼容ie7,8這些奇葩瀏覽器時,考慮到h5的便捷性及響應式,咱們每每引入html5shiv.js和respond.js來讓ie7,8兼容h5及一些響應式變化,引入時就須要用到條件註釋,原來寫條件註釋要麼copy其餘項目上的,要麼隨便寫寫,從沒當回事,也沒注意格式上有什麼要求,下面來看看由於條件註釋引發的大麻煩。css
//css <style> header { width:100px; height:100px; color:red; background:#ccc; } </style> //html <header> hello world! </header>
看上面的代碼,咱們能夠想象出來若是引入正確ie8下,應該是灰色背景下小紅字,先來看下正確的效果html
下面來看下各類錯誤引入html5shiv.js的條件註釋語句及帶來的後果(ie8下測試)html5
<!-- [if lt ie 9]> <script src="lib/html5shiv/html5shiv.js"></script> <![endif]-->
看條件註釋語句彷佛沒什麼不妥,看效果瀏覽器
怎麼沒效果???F12看控制檯測試
header標籤未識別,坑爹啊,看起來沒錯啊,換html5shiv.js版本,換cdn通通沒用,再仔細檢查發如今中括號前多了個空格,把空格去掉,效果變正常。還有在中括號以後加空格會引發異常,中括號裏面ie和9之間必定要加空格否則也會異常。看似漫不經心的一個小空格也會引發大錯誤,用條件註釋時必定要嚴格地按照格式來寫以下:spa
<!--[if lt ie 9]> <![endif]-->