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

サポートが終了した KB の内容についての免責事項

この記事は、マイクロソフトがサポートを提供しなくなった製品について記述しています。 したがって、この記事は「現状のまま」で提供され、更新されることはありません。

概要

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 サイトを参照してください。
: クライアントが 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 ブラウザの機能の説明を得ることができます。
このファイルを %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/08/09 - リビジョン: 1

フィードバック