Windows Internet Explorer 會報告怎樣的使用者代理字串?

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

使用者代理字串是透過 HTTP 流量向網站報告的瀏覽器身分。 Web 開發人員可以使用使用者代理字串 ,來 偵測檢視者用來檢視網站的瀏覽器。 了解偵測瀏覽器的最佳做法 , 可確保您的網站在使用 Windows Internet Explorer 8 用戶端檢視時 , 仍能繼續照預期運作。

本文將說明使用者代理字串的結構 , 以及 Windows Internet Explorer 向伺服器報告的值。 另外也會提供一些範例程式碼 , 以協助 Web 開發人員實作及保持建議的瀏覽器偵測做法。

認識使用者代理字串

您要求網頁時 , 瀏覽器會傳送許多標頭至裝載您造訪之網站的 Web 伺服器。每個標頭所包含的詳細資料 ,都 可以幫助 Web 伺服器決定提供您所要求之資訊的最好方法。其中一個標頭 , 稱為使用者代理 , 會識別向伺服器要求資訊的應用程式。使用者代理字串可以包含選擇性的詳細資料 , 稱為權杖 , 這些資料必須以括號括住 , 而且在各程式之間會有所不同。 Windows Internet Explorer 會 使用權杖來描述關於您電腦系統的其他詳細資料。

[ 1] 顯示的使用者代理字串範例是來自 Windows Internet Explorer ,其中包含其權杖。

圖 2

基於歷史原因 , Windows Internet Explorer 將自己識別為 Mozilla 4.0 瀏覽器。

上面的使用者代理字串範例包含三個權杖:

     1.   相容性旗標 (在此顯示為"compatible"),是大部分新型瀏覽器使用的。這會指示 Windows Internet Explorer 與常用的功能相容。
     2. **  版本權杖**,這會識別瀏覽器並包含其版本號碼。[圖 1] 中的版本權杖 ("MSIE 8.0") 識別了 Windows Internet Explorer 8。若為Windows Internet Explorer 7,則會傳回版本權杖 “MSIE 7.0”。
     3.   平台權杖,這會識別作業系統並包含其版本號碼。[圖 1] 中的平台權杖 ("Windows NT 6.0") 是指 Windows Vista。

[ 1] 中 , Windows Internet Explorer 8 是使用者代理。 不過 , 其他程式經由網際網路連絡伺服器時 , 也會提供自己的使用者代理字串。

只要在網址列中鍵入下列程式碼,即可得知瀏覽器所傳送的使用者代理字串。

javascript:alert(navigator.userAgent)

程式碼執行時,會顯示一個快顯提醒,其中會包含瀏覽器的整個使用者代理字串。

如需使用者代理字串的詳細資訊 , 請參閱 認識使用者代理字串

使用使用者代理字串偵測瀏覽器

您可以使用用戶端指令碼剖析使用者代理字串,並從版本權杖取得版本號碼以偵測 Windows Internet Explorer。

以下程式碼範例顯示兩個 Microsoft Jscript 函式,這兩個函式是判斷檢視者所使用之 Windows Internet Explorer 版本的最佳技術。

function getInternetExplorerVersion()
// Returns the version of Windows Internet Explorer or a -1
// (indicating the use of another browser).
{
   var rv = -1; // Return value assumes failure.
   if (navigator.appName == 'Microsoft Internet Explorer')
   {
      var ua = navigator.userAgent;
      var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
      if (re.exec(ua) != null)
         rv = parseFloat( RegExp.$1 );
   }
   return rv;
}
function checkVersion()
{
   var msg = "You're not using Windows Internet Explorer.";
   var ver = getInternetExplorerVersion();
   if ( ver> -1 )
   {
      if ( ver>= 8.0 )
         msg = "You're using a recent copy of Windows Internet Explorer."
      else
         msg = "You should upgrade your copy of Windows Internet Explorer.";
    }
   alert( msg );
}

在此 範例中,函式getInternetExplorerVersion() 會 剖析瀏覽器傳送的使用者代理字串,並傳回版本號碼。函式checkVersion() 則會 呼叫getInternetExplorerVersion(),並以傳回值和您想要檢查的版本號碼 (在此範例中是 Version 8) 進行比較。請注意其中使用的是大於或等於的比較。這可確保函式可適應未來的 Windows Internet Explorer 版本,當有新版 Windows Internet Explorer 發行時,您不必再更新程式碼。

其他瀏覽器偵測技術

版本向量指的是 Windows Internet Explorer 的內部版本號碼,此號碼儲存在瀏覽器啟動時讀取的登錄機碼中。 您可以使用條件式註解配合版本向量 , 來偵測瀏覽器版本。您也可以使用版本向量來代替使用者代理字串 ( 或除了使用者代理字串之外再加上版本向量 ) ,以 偵測用於檢視網站的瀏覽器。 如需版本向量的詳細資訊 , 以及如何使用版本向量偵測瀏覽器版本的詳細資訊 , 請參閱 版本向量

使用用戶端指令碼的一個優點 , 是可以偵測 Windows Internet Explorer 以外的瀏覽器。指令碼也比條件式註解更有彈性。 如果是專門以 Windows Internet Explorer 為目標 ,則 條件式註解就很好用 , 例如針對自訂 CSS 設定。