條件注釋 (conditional comment) 是於html原始碼中被 microsoft internet explorer 有條件解釋的語句。條件注釋可被用來向 internet explorer 提供及隱藏**。在處理相容問題時,條件注釋是非常常見的手段條件注釋最初於微軟的 internet explorer 5瀏覽器**現,並且直至 internet explorer 9 均支援。微軟已宣布於 internet explorer 10 中以標準模式處理頁面 - 如 html5 - 時停止支援,但是舊版網頁使用這種技術(於相容性檢視)將繼續有效。
上述示例為bootstrap官方的相容性寫法,if lt ie 9意為if less than ie 9,也就是說當瀏覽器版本小於ie9時,執行下列語句,當然小於也就是說不包括ie9,如果是小於等於則是lte(less than or equal to),大於(gt)和大於等於(gte)同理可得,普通條件注釋的寫法可以說很清晰了,所以這篇記錄的重點也不是這裡,而是針對ie以外的瀏覽器如何使用條件注釋。
最初我是這樣寫的:
想當然地認為!ie可以被其他瀏覽器識別從而達到載入不同版本jquery的目的,但實際上條件注釋正常只有ie5-ie9支援,這是乙個ie獨有的用法,所以在相容性的處理上就存在問題,還是看上面的例子,如果去掉2.1.4版本的條件注釋,在大部分情況下都可以正常使用,但是在ie9以下的環境中就會載入兩個版本的jquery,並且還有可能因為不支援高版本jquery的一些寫法而報錯,那麼有沒有更好的解決辦法呢?還是有的,答案就在條件注釋的不同寫法中,這兩種寫法分別叫做下層隱藏與下層顯示。
下層隱藏就是我們上面用的那種寫法,很好理解,也比較常用,但是非ie瀏覽器都會把它當做普通注釋完全忽略裡面的內容。
而想要寫出針對其他瀏覽器生效的條件注釋就需要下層顯示的寫法。首先看乙個不太規範的下層顯示寫法
這個示例展示了應該僅對非 ie 瀏覽器暴露的內容,由於該條件對 ie 為假(並且因此該內容被忽略),而這些標籤自身在非 ie 瀏覽器中是無法識別的(並因此被忽略)。這不是有效的 html 或 xhtml。微軟承認這種句法不是標準化的標記,意圖是這些標記被其它瀏覽器忽視並暴露其中的內容。那如果想要符合w3c標準要如何寫呢?答案如下:
這幾種寫法咋看之下都沒什麼區別,但是看粗看語法著色就能發現區別,下層顯示狀態下條件注釋中的語句是有著色的,代表其已經被識別到,而下層隱藏反之,原因在於下層顯示的寫法其實是把條件注釋的語句注釋了,我們前面說到ie以外的瀏覽器會把條件注釋內的所有內容都當做普通注釋忽略,那麼當我們把條件注釋也注釋掉的時候,ie以外的瀏覽器就可以識別到中間的語句了,所以乙個比較合理的相容性寫法可以這樣:
當使用ie5-ie9時,正常識別條件注釋,跳過!ie的部分,讀取lt ie 9裡面的內容,當使用其他版本時忽略條件注釋,讀取2.1.4版本jquery 注釋 HEX與BIN兩種格式
簡單介紹一下這2種檔案格式的區別 4 hex檔案和bin檔案大小有區別 hex檔案是用ascii來表示二進位制的數值。例如一般8 bit的二進位制數值0x3f,用ascii來表示就需要分別表示字元 3 和字元 f 每個字元需要乙個byte,所以hex檔案需要 2倍的空間。對乙個bin檔案而言,你檢視...
C C 的兩種多型形式
1 2 test.cpp4 5 created by mac on 15 8 11.6 7 8 include9 include10 using namespace std 11class person 基類person12 25person person 26 person person stri...
include的兩種指令形式
在程式設計過程中不在意的細節 搬運於c程式設計 include include stdio.h include使用尖括號的形式時,編譯系統從存放c編譯系統的子目錄中去找所要包含的檔案如 stdio.h 這稱為 標準方式 若使用 include指令是為了使用系統庫函式,因而要包含系統提供的相應標頭檔案...