網頁設計

關於網頁設計的技術或相關資訊分享

條件註解(不同瀏覽器輸出不同內容)

條件註解(Conditional Comments)

webdesign035-01

  來簡單的說明一下,甚麼時候會需要用到呢?當你在 網頁設計的時候,當然會希望各瀏覽器的顯示效果是一樣的,但是偏偏就是各瀏覽器對同樣的語法解析的方法會有所差異,導致沒有辦法完全一樣,這時候就需要這個玩意了,他有一點點像之前提到的CSS Hack的用途,但是這個的用途更廣,不是只有CSS可以處理,甚至可以根據不同的瀏覽器顯示不同的內容,或者是執行不同的Javascript,挺實用的。

另外這其實是IE only的語法,他是利用Html的註解形式,在註解中加入一些判斷的語法,讓IE根據判斷的語法,來決定要不要執行註解中的內容,而其他的瀏覽器例如(Firefox,Google Chome,Safari...)都還是一樣視為註解,來達到區分IE瀏覽器版本及區分不同瀏覽器的效果。

基本示範

請使用各瀏覽器及各版本的IE來觀看,就可以看出不同。

不是IE的才看的到這行文字

內容在 IE7 及比較新的版本,以及 IE 以外的瀏覽器都看的到。

原始碼

<!--[if IE]>
只有IE看的到,其他瀏覽器看不到
<![endif]-->

<!--[if IE 6]>
只有IE6 看的到,其他瀏覽器看不到
<![endif]-->

<!--[if lt IE 7]>
比IE7舊的IE才看的到(不包含IE7),其他瀏覽器看不到
<![endif]-->

<!--[if gte IE 8]>
IE8以上的IE才看的到(包含IE8),其他瀏覽器看不到
<![endif]-->

<!--[if !IE]>-->
不是IE的才看的到
<!--<![endif]-->

<!--[if !(IE 6)]>
  除了IE6以外的IE都看的到,其他瀏覽器看不到
<![endif]-->

<!--[if (gte IE 6)&(lt IE 8)]>
  IE6以上且低於IE8的版本才看的到,其他瀏覽器看不到
<![endif]-->

<!--[if (IE 7)|(IE 6)]>
  只有IE7 或 IE6 看的到,其他版本及其他瀏覽器看不到
<![endif]-->

<!--[if gte IE 7]><!-->
  內容在 IE7 及比較新的版本,以及 IE 以外的瀏覽器都看的到。
<!--<![endif]-->

語法說明

參數 說明
if 判斷是或不是
lt

less-than,版本小於,例如 [if lt IE 7]表示 版本小於IE7,不包含IE7。

lte

less-than or equal,版本小於或等於,例如 [if lte IE 7]表示 版本小於IE7,包含IE7。

gt

greater-than,版本大於,例如 [if gt IE 7]表示 版本大於IE7,不包含IE7。

gte

greater-than or equal,版本大於或等於,例如 [if gte IE 7]表示 版本大於IE7,包含IE7。

!

NOT,否定的意思,例如[if !IE]表示不是IE的。

&

AND,且的意思,例如[if (gt IE 7)&(lt IE 9)],表示要大於IE7且小於IE9,也就是IE8的意思啦

|

OR,或的意思,例如[if (IE 6)|(IE 7)],表示IE6或IE7都會符合條件。

有個這個東西,在網頁設計時就可以針對不同的瀏覽器來顯示不同的內容,例如IE6的用戶就出現一段話,勸他快快升級,新的IE比較快也比較安全啊,總之可以針對不同的瀏覽器來個別做一些微調,讓各瀏覽器的顯示狀況一致,這是必學的手法啊!!不過如果用到CSS3這類或者是舊版本不支援的功能,那也沒有辦法,只能夠讓使用舊版本瀏覽器的使用者,在不影響瀏覽內容的情況下,適當的取捨畫面的部分了。

Reference:Conditional Comments(微軟官方資料英文)