[HOWTO] スクリプトからブラウザのバージョンを調べる方法

文書翻訳 文書翻訳
文書番号: 167820 - 対象製品
すべて展開する | すべて折りたたむ

目次

概要

Internet Explorer 4.0 により提供される新しい機能を使用する場合、クライアント側とサーバー側の両方のスクリプトでブラウザのバージョンを調べ、現在実行中のブラウザのバージョンに従って、Web アプリケーションで新しい機能を利用したり、利用しないようにしたりすることが望ましいことがあります。

重要 : この資料で使用されている方法は、Web サイトで、サイトに接続したブラウザから正しい "HTTP_USER_AGENT" 文字列を受け取れることを前提としています。プロキシ サーバーやブラウザの中には、不正確な情報、または解釈が困難な情報を送るものがあります。たとえば、Opera 5.12 が返す HTTP_USER_AGENT 文字列は "Mozilla/4.0 (compatible; MSIE 5.0; <オペレーティング システム>) Opera 5.12 [en]" です。この文字列の最初の部分は Internet Explorer 5 が返す文字列と同じであるため、この文字列の解釈は困難です。

Internet Explorer バージョン 5 以降 (Microsoft Win32 および Unix プラットフォーム上のみ) を一意に識別する必要がある場合は、CLIENTCAPS 動作の isComponentInstalled または getComponentVersion メソッドを使用します。これらのメソッドの詳細については、以下のマイクロソフト Web サイトを参照してください。
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" に等しいかを確認する既存のスクリプトは、Internet Explorer 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>

サーバー側のスクリプト

: サーバー側のスクリプトでは、BrowserType オブジェクトの代わりに、Request.ServerVariables("HTTP_USER_AGENT") メソッドを使用することができます。詳細については、「サポート技術情報」(Microsoft Knowledge Base) の次の資料を参照してください。
272413 HOWTO: Determine the Browser Type in Server-Side Script Without the BrowserType Object
Active Server Pages (ASP) に付属している Browser Capability コンポーネントをスクリプトから使用して、User-Agent HTTP ヘッダーと BROWSCAP.INI ファイルのエントリとを比較することにより、クライアントの Web ブラウザの機能の説明を得ることができます。
http://www.cyscape.com/asp/browscap/
このファイルを %windows%\system32\inetsrv\asp\cmpnts ディレクトリにコピーし、次の例のようなサーバー側のスクリプトを実行します。

この例では、現在のブラウザが 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>

関連情報

Active Server Pages (ASP) ロードマップのコンポーネント参照

関連情報

この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 167820 (最終更新日 2001-09-26) を基に作成したものです。

この資料に含まれているサンプル コード/プログラムは英語版を前提に書かれたものをありのままに記述しており、日本語環境での動作は確認されておりません。

プロパティ

文書番号: 167820 - 最終更新日: 2007年8月9日 - リビジョン: 1.3
この資料は以下の製品について記述したものです。
  • Microsoft Internet Explorer 3.0
  • Microsoft Internet Explorer 3.01
  • Microsoft Internet Explorer 3.02
  • Microsoft Internet Explorer 4.0 128 ビット版
キーワード:?
kbfaq kbhowto kbscript KB167820
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"
サポート期間が終了した「サポート技術情報」資料に関する免責事項
この資料は、マイクロソフトでサポートされていない製品について記述したものです。そのため、この資料は現状ベースで提供されており、今後更新されることはありません。

フィードバック

 

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