版本向量

注意:本文件只是初步文件,日後可能隨時異動。

版本向量指的是 Windows Internet Explorer 的內部版本號碼,此號碼儲存在瀏覽器啟動時讀取的登錄機碼中。Web 開發人員可以使用版本向量 , 來偵測檢視者用來檢視網站的瀏覽器。 了解偵測瀏覽器的最佳做法 , 可確保您的網站在使用 Windows Internet Explorer 8 用戶端檢視時 , 仍能繼續照預期運作。

本文將說明 Windows Internet Explorer 如何使用版本向量的值。 另外也會提供一些範例程式碼 , 以協助 Web 開發人員實作及保持建議的瀏覽器偵測做法。

Windows Internet Explorer 如何使用版本向量

Windows Internet Explorer 除了會使用版本向量來填入其 [說明] -> [關於] 區段之外,也會在處理條件式註解時使用此值。條件式註解是網頁之 HTML 原始碼中的註解區塊,只由 Windows Internet Explorer 解譯。註解可能包含一個或多個作業、功能或值。

<!--[if gte IE8]>

例如,上面的程式碼顯示檢查 Windows Internet Explorer Version 8 和更高版本所需的註解程式碼。使用大於或等於的比較,可確保條件適用於未來的 Windows Internet Explorer 版本,當有新版本發行時,就不必再更新程式碼。

版本向量也包含次要的瀏覽器版本。測試主要的瀏覽器版本號碼時,版本向量是一個整數。若要檢查次要瀏覽器版本,只要在版本向量後加上小數點和四位數。 例如 , Windows Internet Explorer 5.5 發行組建的版本向量是 5.5002 。

<!--[if gte IE 5.5002]><p>You are using IE 5 or higher</p><![endif]-->

這個程式碼範例顯示檢查主要瀏覽器版本和次要瀏覽器版本所需的註解程式碼。 這可以讓您再微調條件。

條件式註解的開頭標籤和結尾標籤都包含連字號 ( 「 -- 」 ) , 和基本 HTML 註解一樣。條件 會 在標籤的開頭部分顯示 , 而 [endif] 會 放在標籤的結尾之前。內容 會 放在註解標籤之間。這些稱為舊版隱藏註解 , 因為不支援條件式註解的任何瀏覽器或瀏覽器版本,都會忽略標籤之間的這些註解和標記。 沒有連字號的條件式註解稱為舊版顯露 註解 , 因為舊版瀏覽器會忽略註解 , 但是會處理 標籤 之間的標記。

<![if lt IE 5.5]><p>You are using earlier than IE 5.5 or another downlevel browser</p><![endif]>

這個程式碼範例顯示檢查主要瀏覽器版本和次要瀏覽器版本所需的註解程式碼。 這可以讓您再微調條件。

使用版本向量偵測瀏覽器

條件式註解的使用涉及為特定的 Windows Internet Explorer 版本指定不同的目標階層式樣式表 (CSS) 規則。 這可以讓您確保 Windows Internet Explorer 8 用戶端不會收到針對 Windows Internet Explorer 7 設計的 CSS 修正和變更。也可以使用使用者代理字串來偵測瀏覽器版本。[表 **1]**包含可用來建置條件式註解的功能、運算子和/或值。

表2

項目

範例

註解

IE

[if IE]

目前唯一支援的功能是字串「IE」, 這會 對應至 Windows Internet Explorer。

value

[if IE 7]

整數或浮點數 ,這會 對應至瀏覽器的版本。 如果版本號碼與瀏覽器版本相符 ,就會 傳回布林值 True 。

!

[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 8]

大於或等於運算子。 如果第一個引數大於或等於第二個引數 ,就會 傳回 True 。

( )

[if !(IE 7)]

子運算式運算子。結合布林運算子使用, 以 建立更複雜的運算式。

&

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

AND 運算子。如果全部子運算式都評估為True, 就會 傳回True。

|

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

OR 運算子。如果有任何子運算式評估為True, 就會 傳回True。

true

[if true]

一律評估為 T rue 。

false

[if false]

一律評估為 F alse 。

以下範例顯示條件式註解 的使用 , 以 判斷 正在 使用的是哪個版本的 Windows Internet Explorer,以及應傳送的 CSS 樣式表。

<head>
   <title>Test Page</title>
   <meta http-equiv="X-UA-Compatible" content="IE=8"/>
   <!--[if gte IE 8]>
   <linkrel="stylesheet" type="text/css" href="/stylesheets/standards.css" />
   <![endif]-->
   <!--[if IE 7]>
   <linkrel="stylesheet" type="text/css" href="/stylesheets/ie.css" />
   <![endif]-->
</head>

此外,如果想要針對 Windows Internet Explorer 7 和更高的版本使用相同的樣式表,可以使用下列範例程式碼。

<head>
   <title>Test Page</title>
   <!--[if gte IE 7]>
   <linkrel="stylesheet" type="text/css" href="/stylesheets/ie.css" />
   <![endif]-->
</head>

請注意 , 上列程式碼範例使用大於或等於的比較。這可確保程式碼可適應未來的 Windows Internet Explorer 版本 , 因此當有新版 Windows Internet Explorer 發行時 , 您不必再更新程式碼。 以下是各種條件陳述式的其他範例。

<!--[if IE]><p>You are using Internet Explorer.</p><![endif]-->

<![if !IE]><p>You are not using an uplevel Internet Explorer version.</p><![endif]>

<!--[if IE 8]><p>Welcome to Internet Explorer 8!</p><![endif]-->

<!--[if !(IE 8)]><p>You are not using Internet Explorer8.</p><![endif]-->

<!--[if gte IE 7]><p>You are using IE 7 or greater.</p><![endif]-->

<!--[if (IE 5)]><p>You are using IE 5 (any version).</p><![endif]-->

<!--[if (gte IE 5.5)&(lt IE 7)]><p>You are using IE 5.5 or IE 6.</p><![endif]-->

<!--[if lt IE 5.5]><p>Please upgrade your version of Internet Explorer.</p><![endif]-->

<!--[if true]>You are using an <em>uplevel</em> browser.<![endif]-->

<!--[if false]>You are using a <em>downlevel</em> browser.<![endif]-->

<!--[if true]><![if IE 7]><p>This nested comment is displayed in IE 7.</p><![endif]><![endif]-->

如需條件式註解和版本向量的詳細資訊,請參閱關於條件式註解

其他瀏覽器偵測技術

使用者代理字串是透過 HTTP 流量向網站報告的瀏覽器身分。您可以利用使用者代理字串來代替版本向量 ( 或除了版本向量之外再加上使用者代理字串 ) ,以 偵測用於檢視網站的瀏覽器。 如需使用者代理字串 , 以及如何使用這些字串來偵測瀏覽器版本的詳細資訊 , 請參閱 Windows Internet Explorer 會將哪些內容報告為使用者代理字串

使用條件式註解的一個優點,是不需要指令碼,而網頁中若沒有使用指令碼,就不需要載入指令碼引擎。條件式註解是在下載和剖析階段處理,因此只會下載以瀏覽器為目標的內容。 條件式註解可與其他瀏覽器偵測技術任意結合運用。