ASP.NET Web サーバー コントロールとブラウザの機能

更新 : 2007 年 11 月

種類の異なるブラウザ、または同一種類であってもバージョンの異なるブラウザでは、サポートする機能がそれぞれ異なっています。ASP.NET サーバー コントロールはページを要求したブラウザを自動的に判別し、ブラウザに適合したマークアップをレンダリングします。ただし、以前のバージョンのブラウザでは、コントロールの一部の機能が表示されない場合があります。したがって、できるだけ多くのブラウザ上でページ出力を確認し、目的のページが意図したとおりに表示されるかどうかを確認することをお勧めします。

ブラウザの種類の自動検出

既定では、ASP.NET Page Framework は、要求時にブラウザからサーバーに渡されるユーザー エージェント情報を読み取って、ブラウザの機能を判定します。この情報は、HttpRequest オブジェクトの UserAgent プロパティとして使用できます。ユーザー エージェント情報は、構成ファイルのエージェントのエントリおよびブラウザの定義ファイルと照合されます。

x3k2ssx2.alert_note(ja-jp,VS.90).gifメモ :

構成ファイル (.config) の browserCaps セクションは、.NET Framework Version 2.0 で使用されなくなりました。下位互換性のために、このセクションの構成設定は、アプリケーション レベルで設定されている場合は有効ですが、コンピュータレベルの %SystemRoot%\Microsoft.NET\Framework\versionNumber\CONFIG\Browsers フォルダおよび既存のアプリケーション レベルの App_Browser フォルダにあるブラウザ定義ファイル (.browser) に含まれる情報とマージされます。詳細については、「ブラウザ定義ファイルのスキーマ (browsers 要素)」を参照してください。

現在のユーザー エージェント情報とファイルにリストされているユーザー エージェントが一致すると、ページは、対応するブラウザ機能 (たとえば、スクリプト、スタイル、フレームなどをブラウザがサポートしているかどうか) を読み取ることができます。この機能に基づいて、ページのコントロールは XHTML、HTML 3.2 などの適切なマークアップを使用して Web コントロールをレンダリングします。ASP.NET が HTML をレンダリングする場合、ASP.NET は、レンダリングするのが CSS (Cascading Style Sheets) 準拠の最新バージョンの HTML 要素か、以前の CSS 非準拠のバージョンの HTML 要素かを判断できます。以前のバージョンのブラウザでは、ASP.NET は CSS スタイルの代わりに font 要素などの要素を使用して書式指定情報をレンダリングします。

ブラウザによる型の検出のオーバーライド

ブラウザを自動検出する代わりにページのレンダリング方法を明示的に制御する場合は、ページの ClientTarget プロパティを設定します。このプロパティは、ページの @ Page ディレクティブの属性として宣言して設定するか、またはプログラムによって設定します。

ClientTarget プロパティの値は、レンダリングするページのブラウザの種類のエイリアスです。たとえば、Microsoft Internet Explorer 6.0 用にページをレンダリングする場合は、uplevel エイリアスを使用します。エイリアスは、構成ファイルの clientTarget セクションで定義する必要があります。定義済みの既定値は、ie5、ie4、uplevel、および downlevel です。

downlevel エイリアスを指定すると、ページを要求したブラウザの種類に関係なく、ページが HTML 3.2 互換要素をレンダリングするように設定できます。同様に、uplevel を指定すると、以前のバージョンのブラウザであってもページが CSS スタイル属性をレンダリングするように設定できます。

Machine.config ファイルまたは Web.config ファイルに定義することによって、追加のエイリアスを作成できます。これにより、カスタム ブラウザ定義を作成できます。詳細については、「ASP.NET 構成設定」を参照してください。

AJAX 対応の ASP.NET のコントロールおよび機能

ASP.NET の AJAX 対応の機能はほとんどの最新のブラウザと互換性があり、それらのブラウザの既定のセキュリティ設定で動作します。これらのコントロールと機能を使用するには、ブラウザでクライアント スクリプトを実行できる必要があります。AJAX 対応のコントロールの例として、UpdatePanel コントロールや ScriptManager コントロールがあります。AJAX 対応のコントロールや機能と互換性のあるブラウザの一覧、および推奨されるセキュリティ設定の一覧については、「AJAX 対応の ASP.NET ページのブラウザのセキュリティ設定」を参照してください。

x3k2ssx2.alert_note(ja-jp,VS.90).gifメモ :

HttpBrowserCapabilities オブジェクトで公開されるプロパティを使用すると、ブラウザが ECMAScript (JScript、JavaScript) をサポートするかどうかを確認できます。

ASP.NET の AJAX 機能の概要については、「AJAX およびクライアント機能の追加」を参照してください。

クライアント スクリプト

ASP.NET サーバー コントロールの一部の機能は、クライアント スクリプトを実行できる環境でだけ実現します。ブラウザにスクリプトの実行機能が備わっている場合は、クライアント スクリプトが自動的に生成され、ページの一部として送信されます。ブラウザにスクリプトの実行機能が備わっていても、その機能がオフになっていると、コントロールの機能を十分に使用できない場合があります。詳細については、「ASP.NET Web ページのクライアント スクリプト」を参照してください。

旧バージョンのブラウザの使用

ブラウザは、"上位レベル" ブラウザ (新しいバージョン) および "下位レベル" ブラウザ (旧バージョン) とも呼ばれる 2 つのグループに分かれます。これらのグループ分けは、ブラウザが提供するネイティブ サポートの種類を示しています。また、通常は、グループによって Web ページの表示と動作が決まります。

通常、"上位レベル" に分類されるブラウザは、少なくとも次の機能をサポートしています。

  • ECMAScript (JScript、JavaScript) 1.2.

  • HTML 4.0

  • MSDOM (Microsoft Document Object Model)

  • カスケード スタイル シート (CSS)

"下位レベル" のブラウザやクライアント デバイスは、次の機能だけをサポートしています。

  • HTML 3.2

次の表のサーバー コントロールのプロパティは、上位レベルと下位レベルのブラウザで表示形式が異なります。

サーバー コントロールのプロパティ

上位レベルと下位レベルのブラウザのレンダリング

AccessKey

このプロパティは、コントロールの種類にかかわらず、下位レベルのブラウザでは正しく機能しません。Microsoft Internet Explorer 4.0 以降のみで正しく機能します (HTML 4.0 ではありません)。

BackColor

このプロパティは、TablePanelGridViewCalendar、および ValidationSummary の各コントロールに対してのみ、下位レベルのブラウザで正しく機能します。レイアウトが Table コントロールにある場合は、CheckBoxListRadioButtonList、および DataList でも機能します。一般に、HTML 3.2 では table 要素としてレンダリングするコントロールだけが背景色を出力できるのに対し、HTML 4.0 ではほぼすべてのコントロールが出力できます。Label コントロール、検証コントロール、Flow モードのリスト コントロールなど、span 要素としてレンダリングされるコントロールの場合、BackColor は Internet Explorer 5 以降では正しく機能しますが、Internet Explorer 4.0 では正しく機能しません。

BorderColor

このプロパティは、BackColor と同じテーブルベースのコントロールの場合のみ下位レベルのブラウザで正しく機能します。ただし、HTML 3.2 標準には含まれない bordercolor 属性として出力されます。この属性は、Internet Explorer 3.0 などの一部のブラウザでだけサポートされます。

BorderStyle

このプロパティは、下位レベルのブラウザでは正しく機能しません。HTML 3.2 には、このプロパティに相当する機能はありません。

BorderWidth

このプロパティは、HTML の table 要素 (TablePanelGridView、および Calendar) または img 要素 (ImageAdRotator) としてレンダリングされるコントロールでのみ正しく機能します。BorderWidth は、ピクセル指定がされている場合のみ下位レベルのブラウザで正しく機能します。それ以外の場合は、常に border=1 または border=0 のいずれかでレンダリングされます。また、GridLines が None 以外の値に設定されている場合、BorderWidth はテーブルベースのコントロールのみで機能します。これは、グリッド線を使用せずに境界線を指定する方法が、HTML 3.2 には存在しないためです。Label コントロール、検証コントロール、Flow モードのリスト コントロールなど、span 要素としてレンダリングされるコントロールの場合、BorderWidth は Internet Explorer 5 以降で正しく機能しますが、Internet Explorer 4.0 では正しく機能しません。

CssClass

このプロパティは、ブラウザに関係なく常に class 属性としてレンダリングされます。ほとんどの上位レベルのブラウザは、class 属性を認識します。

Enabled

このプロパティは、コントロールでイベントや関数を有効にするかどうかを指定するときに使用します。Internet Explorer 4.0 以降では、Enabled を false に設定すると、disabled=true 属性を使ってコントロールを無効にしたり、コントロールへの入力をロックしたりする効果を実現できます。

Font-Bold、Font-Italic、Font-Strikeout などのプロパティ

これらのプロパティは、上位レベルのブラウザでは style 属性としてレンダリングされ (太字には Font-Weight、斜体には Font-Style など)、下位レベルのブラウザでは個別の要素としてレンダリングされます (b、i など)。

Font-Size

このプロパティは、すべてのコントロールに対して、下位レベルのブラウザで正しく機能します。ただし、名前付きフォント サイズ (Small、Smaller など) が使用されている必要があります。上位レベルのブラウザでは、このプロパティは style 属性としてレンダリングされます。下位レベルのブラウザでは、このプロパティは font 要素としてレンダリングされます。

Font-Overline

このプロパティは、下位レベルのブラウザでは正しく機能しません。

ForeColor

このプロパティは、ImageAdRotatorHyperLink、および LinkButton を除くすべてのコントロールに対して、下位レベルのブラウザで正しく機能します。下位レベルのブラウザでは、ForeColor は font 要素を使用してレンダリングされます。

Height

このプロパティは、Label コントロール、検証コントロール、HyperLink コントロール、または LinkButton コントロールの場合は下位レベルのブラウザで正しく機能しません。また、Height は、CheckBoxListRadioButtonListDataList の各コントロールの場合にも、そのコントロールのレイアウトが Flow に設定されている場合は正しく機能しません。ピクセルおよびパーセントによる指定だけが有効です。

テーブルベースのコントロールの場合、内部テーブルの高さは、下位レベルのブラウザではレンダリングされません。これは、Height 属性は HTML 4.01 で廃止されたためです。そのため、上位レベルと下位レベルのレンダリングはやや異なる外観になります。最も目立つ違いは、BackColor を SideBarStyle プロパティに設定する場合です。上位レベルではその列の全体の長さに BackColor が表示されますが、下位レベルのブラウザでは、テキスト ボタンに適応させる必要があるときにのみ表示されます。

TabIndex

このプロパティは、コントロールの種類にかかわらず、下位レベルのブラウザでは正しく機能しません。Microsoft Internet Explorer 4.0 以降のみで正しく機能します (HTML 4.0 ではありません)。

ToolTip

このプロパティは、下位レベルのブラウザでは正しく機能しません。

Width

このプロパティは、LabelHyperLinkLinkButton、または検証コントロールの場合は下位レベルのブラウザで正しく機能しません。また、Width は、CheckBoxListRadioButtonListDataList の各コントロールの場合にも、そのレイアウトが Flow に設定さてれている場合は正しく機能しません。ピクセルおよびパーセントによる指定だけが有効です。

参照

処理手順

方法 : ASP.NET Web ページでブラウザの種類を検出する

チュートリアル : カスタム サーバー コントロールの開発と使用

参照

ClientTarget

clientTarget 要素 (ASP.NET 設定スキーマ)

HttpBrowserCapabilities

Browser

UserAgent

WebControl

その他の技術情報

ASP.NET Web ページのプログラミング

ASP.NET カスタム サーバー コントロールの開発