IE 條件解釋的語句

2021-06-18 12:19:51 字數 3896 閱讀 3411

這裡是乙個演示條件注釋如何工作的簡單示例。

you are not using internet explorer.p>

有兩種「條件注釋」:下層顯示 (downlevel revealed)和下層隱藏(downlevel hidden)。

每種注釋的基本句法如下表所示。第一條展示的是基本的 html 注釋,被包括在內作為比較以及用以說明被每種條件注釋使用的不同句法。

注釋型別

句法或可能取值

標準 html 注釋

downlevel-hidden

downlevel-revealed

expression]> html

於每個條件注釋之中的句法塊內的 html 表示任意的 html 內容塊,包括指令碼。兩種條件注釋均使用條件表示式以指示注釋塊內的內容應該被解析還是被忽略。條件表示式由特性,操作符,和/或決定於其特性的值組成。下表展示了支援的特性並描述了每種特性支援的值。

專案示例

說明ie

[if ie]

字串 "ie" 是一種對應於用以瀏覽網頁的 internet explorer 的版本的一種特性。

value

[if ie 7]

乙個對應於瀏覽器版本的整數或浮點數。返回乙個布林值,版本號和瀏覽器版本相匹配時為 true。更多資訊參見版本向量(en:version vector)。

windowsedition

[if windowsedition]

適用於 windows 7 上的 internet explorer 8。字串 "windowsedition" 是一種對應於用以瀏覽該網頁的 microsoft windows 版本的特性。

value

[if windowsedition 1]

乙個對應於用以瀏覽該網頁的 windows 的版本的整數。返回乙個布林值,數值和使用的版本相匹配時為真 true。關於所支援的值和它們所描述的版本的更多資訊,參見getproductinfo 函式的 pdwreturnedproducttype 引數。

true

[if true]

永遠等價於 true.

false

[if false]

永遠等價於 false.

可用於創造條件注釋的算符如下表。

專案示例說明!

[if !ie]

not 運算子。這被放在 特性, 算符, 或者 子表示式 的前面以反轉該表示式的布林值含義。

lt[if lt ie 5.5]

小於運算子。第一項小於第二項時返回 true。

lte[if lte ie 6]

小於或等於運算子。第一項小於或等於第二項時返回 true。

gt[if gt ie 5]

大於運算子。第一項大於第二項時返回 true。

gte[if gte ie 7]

大於或等於運算子。第一項大於或等於第二項時返回 true。

( )[if !(ie 7)]

子表示式運算子。用以連線布林算符以創造更加複雜的表示式。

&[if (gt ie 5)&(lt ie 7)]

and 運算子。所有子表示式為真時返回 true。

|[if (ie 6)|(ie 7)]

or 運算子。子表示式任意乙個為真時返回 true。

如下是兩個「下層隱藏」條件注釋的示例。

或者

第乙個示例中的指令將會讓 ie 8 讀取指定的 css 檔案,而 ie 7 或者其它版本的 ie 將會忽略它。非 ie 的瀏覽器同樣會把它忽略因為它看起來像一條標準的 html 注釋。第二條示例裡的標記將會讓 ie 5 至 7 讀取其內的 css 樣式。通過對這種標記的不同的使用你也可以挑出 ie 6, ie 5 或者比指定版本更新(大)或更舊(小)版本的 ie。

如下是乙個「下層顯示」條件「注釋」的示例,它除了誤導向的名字之外,根本不是乙個 (x)html 注釋,使用預設的微軟語法:

[if !ie]>

href

="non-ie.css"

rel=

"stylesheet">

[endif]>

這個示例展示了應該僅對非 ie 瀏覽器暴露的內容,由於該條件對 ie 為假(並且因此該內容被忽略),而這些標籤自身在非 ie 瀏覽器中是無法識別的(並因此被忽略)。這不是有效的 html 或 xhtml。

微軟承認這種句法不是標準化的標記,[4]

意圖是這些標記被其它瀏覽器忽視並暴露其中的內容。為了確保與 w3c 標準的相容,一些網頁開發者使用了下層顯示的條件注釋的一種替代性的技巧。[5]

href

="non-ie.css"

rel=

"stylesheet">

雖然結構上有些令人困惑,這種具體的句法是有效的 (x)html 且對為非 ie 瀏覽器準備的有條件的片段是有用的;但如果其中的條件等價於 true(例如,如果寫意圖在非 ie 瀏覽器和一些版本的 ie 上顯示的**),ie 將會顯示於 html 內容前出現的「-->」。這個問題通過對原來的「-->」之前加乙個「

this code displays on non-ie browsers and on ie 7 or higher.

這個額外的「是一條空注釋並因此被忽略。

這個方法儘管在目前(截至 ie 9)版本的 internet explorer 中仍然有用,無法保證未來的版本將會繼續如此工作(internet explorer 10 已取消條件注釋的支援)。

自 internet explorer 4 開始,存在一種於 jscript 之中加入條件注釋的類似的專有的機理,名稱是條件編譯。[6]

**示例:

/*@cc_on

document.write("you are using ie4 or higher");

@*/script>

同樣有一些預定義的變數,[7]

儘管隨著微軟改變 xp sp3 上的 ie 6 的 jscript 引擎,[8]

這些不再可以依賴,現在它如下所示:

@_jscript_version ==

5.7

其結果是,利用條件編譯偵測 ie 6 的方法如下:

IE的if條件語句 應用

摘自 作為ie的if條件注釋使用備忘,有些時候試用if ie而不是在css中使用hack,就能通過w3c驗證。非ie可識別 摘自 只有ie瀏覽器支援條件注釋,其他瀏覽器會把條件注釋語句解釋成注釋,通過這個特性我們既可以做ie和非ie瀏覽器載入不同的頁面元素,也可以根據ie瀏覽器的不同版本載入不同的頁...

順序 條件 迴圈語句的底層解釋

順序結構 資料傳送指令 我們都清楚,絕大多數編譯器都把組合語言作為中間語言,把組合語言程式變成可執行的二進位制檔案早就解決了,所以現在的高階語言基本上只需要把自己翻譯成組合語言就可以了。彙編指令總共只有那麼多,大多數指令都是對資料進行操作,比如常見的資料傳送指令mov。不難理解,被運算元據無非有三種...

順序 條件 迴圈語句的底層解釋

順序結構 資料傳送指令 我們都清楚,絕大多數編譯器都把組合語言作為中間語言,把組合語言程式變成可執行的二進位制檔案早就解決了,所以現在的高階語言基本上只需要把自己翻譯成組合語言就可以了。彙編指令總共只有那麼多,大多數指令都是對資料進行操作,比如常見的資料傳送指令mov。不難理解,被運算元據無非有三種...