如何判斷瀏覽器版本從指令碼

文章翻譯 文章翻譯
文章編號: 167820 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

使用新功能,提供網際網路總管 4.0,可能迫切需要的用戶端和伺服器端指令碼,以判斷瀏覽器的版本,讓 Web 應用程式可以利用新功能或依正常程序,降低目前正在執行瀏覽器版本而定。

重要: 用在本文中的方法依賴接收正確的 HTTP_USER_AGENT"字串,連線到網站的瀏覽器的網站。某些 proxy 伺服器和瀏覽器可能會傳送不正確或難以解譯的資訊。例如預設的 HTTP_USER_AGENT 字串 Opera 5.12 傳回為"Mozilla/4.0 (相容 ; MSIE 5.0; < 作業系統 >) Opera 5.12 [en]"。這個字串是難以解譯因為字串的第一個部分是與 Internet Explorer 5 傳回的字串相同。

如果需要唯一識別 Internet Explorer 5 或更新 (在 Microsoft Win32 和 Unix 平台只) 版本使用 [CLIENTCAPS 行為的 isComponentInstalledgetComponentVersion 方法]。這些方法資訊請參閱下列 Microsoft 網站]:
http://msdn2.microsoft.com/en-us/library/ms531357.aspx

http://msdn2.microsoft.com/en-us/library/ms531350.aspx
注意: 如果用戶端不是 Internet Explorer 5 或更新版本 (Microsoft Win32 和 Unix 平台只),這些方法將會失敗。

其他相關資訊

從用戶端指令碼

以下 JScript 函式來判斷它從用戶端指令碼執行瀏覽器版本。函式執行大型大部分的目前可用的瀏覽器上,並傳回任何 Microsoft Internet Explorer 瀏覽器和零 (0) 供其他人的主要版本號碼。使用這個函式可確保指令碼能夠與 Internet Explorer 的未來版本相容。
   // This function returns Internet Explorer's major version number,
   // or 0 for others. It works by finding the "MSIE " string and
   // extracting the version number following the space, up to the decimal
   // point, ignoring the minor version number
   <SCRIPT LANGUAGE="JavaSCRIPT">
   function msieversion()
   {
      var ua = window.navigator.userAgent
      var msie = ua.indexOf ( "MSIE " )

      if ( msie > 0 )      // If Internet Explorer, return version number
         return parseInt (ua.substring (msie+5, ua.indexOf (".", msie )))
      else                 // If another browser, return 0
         return 0

   }
   </SCRIPT>
				
時檢查版本號碼,指令碼一定要使用 > = 運算子,而不是 = 運算子來確保與未來版本的相容性。特別是對於執行個體檢查 userAgent 等於"MSIE 3"的現有指令碼應該變更為使用 > = 運算子,讓指令碼也辨識網際網路總管 4.0。

下列範例示範如何偵測瀏覽器版本從用戶端指令碼。本範例並不特別會檢查這類與 Windows 95、 Windows NT、 Windows 3.1 及其中需要個別 userAgent 子字串檢查適用時的等等等的平台版本的附註:
<SCRIPT LANGUAGE="javascript">
   if ( msieversion() >= 4 )

      document.write ( "This is Internet Explorer 4 or later" );

   else if ( msieversion() >= 3 )

      document.write ( "This is Internet Explorer 3" );

   else

      document.write ( "This is another browser" );

   </SCRIPT>
				

從伺服器端指令碼

注意: 這個 Request.ServerVariables("HTTP_USER_AGENT") 方法可能會使用來代替 BrowserType 物件中的伺服器端指令碼。如需詳細資訊按一下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
272413如何判斷瀏覽器類型,在伺服器端指令碼中沒有 BrowserType 物件
是來自動態伺服器網頁 (ASP) 此瀏覽器能力元件也藉由比較使用者代理 HTTP 標頭用 BROWSCAP.INI 檔案中的項目會提供您的指令碼的用戶端 Web 瀏覽器功能的描述。ASP 應用程式來偵測新的網際網路檔案總管 4.0 功能的瀏覽器的支援,請從下列 Cyscape 網站複製最新 BROWSCAP.INI:
http://www.cyscape.com/asp/browscap/
將它複製到 %windows%\system32\inetsrv\asp\cmpnts 目錄,並執行伺服器端指令碼類似下面的範例。

如果目前的瀏覽器是 Internet Explorer 4.0 或更新版本,本範例特別充分利用新的動態 HTML 功能:
<HTML>
<BODY>

   <%  Set bc = Server.CreateObject("MSWC.BrowserType") %>
   <table border=0 cellspacing="0" cellpadding="5">

      <tr>

         <% If bc.browser = "IE" and bc.version >= 4 Then %>
         <td><a href="chocolate.htm" TARGET="_TEXT"
              onmouseover="this.style.color='red'"
              onmouseout="this.style.color='purple'">chocolate</a>
         </td>

         <% Else %>
            <td><a href="chocolate.htm" TARGET="_TEXT">chocolate</a></td>
         <% End If %>

         <td>|</td>

         <% If bc.browser = "IE" and bc.version >= 4 Then %>
         <td><a href="vanilla.htm" TARGET="_TEXT"
              onmouseover="this.style.color='red'"
              onmouseout="this.style.color='purple'">vanilla</a>
         </td>

         <% Else %>
            <td><a href="vanilla.htm" TARGET="_TEXT">vanilla</a></td>
         <% End If %>

      </tr>

   </table>

</BODY>
</HTML>
				

?考

在 [動態伺服器網頁 (ASP) 藍圖的元件參考

屬性

文章編號: 167820 - 上次校閱: 2007年8月9日 - 版次: 1.4
這篇文章中的資訊適用於:
  • Microsoft Internet Explorer 3.0
  • Microsoft Internet Explorer 3.01
  • Microsoft Internet Explorer 3.02
  • Microsoft Internet Explorer 4.0 128-Bit Edition
關鍵字:?
kbmt kbfaq kbhowto kbscript KB167820 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:167820
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。
依現狀不再更新的知識庫內容免責聲明
本文旨在說明 Microsoft 不再提供支援的產品。因此,本文係依「現狀」提供,不會再更新。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com