共用方式為


ASP.NET Web 伺服器控制項和瀏覽器能力

更新:2007 年 11 月

不同的瀏覽器 (以及相同瀏覽器的不同版本) 支援的功能也不相同。ASP.NET 伺服器控制項會自動判斷要求網頁的瀏覽器,然後針對瀏覽器呈現適當的標記。不過,有些控制項功能無法在舊的瀏覽器上進行轉譯,因此最好是盡可能在各種瀏覽器類型上檢視網頁的輸出,確定網頁能照您要的方式顯示在所有瀏覽器上。

自動偵測瀏覽器類型

根據預設,藉由在要求期間讀取從瀏覽器傳遞到伺服器的使用者代理資訊,ASP.NET 網頁架構可決定瀏覽器的功能 (這個資訊是當做 HttpRequest 物件的 UserAgent 屬性使用)。網頁符合根據組態檔和瀏覽器定義檔之代理項目的使用者代理資訊。

注意事項:

組態檔 (.config) 的 browserCaps 區段在 .NET Framework 2.0 版中已被取代。為了提供回溯相容性,本章節中的組態設定仍然有效 (如果是在應用程式層級設定),但是會與位於電腦層級 %SystemRoot%\Microsoft.NET\Framework\versionNumber\CONFIG\Browsers 資料夾,以及任何現有應用程式層級 App_Browser 資料夾中的瀏覽器定義檔案 (.browser) 所包含的資訊合併。如需詳細資訊,請參閱瀏覽器定義檔結構描述 (browsers 項目)

當網頁在目前使用者代理程式資訊和列在檔案中的使用者代理程式之間找到相符項目時,即可讀取對應的瀏覽器功能,例如瀏覽器是否支援指令碼、樣式、框架等等。根據這些能力,網頁上的控制項會使用適當的標記呈現 Web 控制項,例如 XHTML、HTML 3.2 等。如果 ASP.NET 要呈現 HTML,就能夠判斷是否要呈現較新的 (符合階層式樣式表標準) 或先前的 (非 CSS 標準) HTML 項目版本。ASP.NET 會使用項目 (例如 font 項目) 而不是 CSS 樣式,來呈現舊版瀏覽器的格式化資訊。

覆寫瀏覽器類型偵測

如果要明確控制網頁呈現的方式而不是仰賴自動瀏覽器偵測,您可設定網頁的 ClientTarget 屬性。您可以宣告方式將屬性 (Property) 設定為網頁之 @ Page 指示詞的屬性 (Attribute),或是以程式設計方式設定。

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 控制項和功能

啟用 AJAX 的 ASP.NET 功能與大多數瀏覽器都相容,而且可以在這些瀏覽器的預設安全性設定下執行。這些控制項和功能要求瀏覽器必須能夠執行用戶端指令碼。UpdatePanelScriptManager 控制項則是啟用 AJAX 控制項的範例。如需啟用 AJAX 控制項和功能之相容瀏覽器與建議的安全性設定清單,請參閱 已啟用 AJAX 之 ASP.NET 頁面的瀏覽器安全性設定

注意事項:

您可以使用 HttpBrowserCapabilities 物件所公開的屬性來判斷瀏覽器是否支援 ECMAScript (Jscript、JavaScript)。

如需 ASP.NET 的 AJAX 功能概觀,請參閱加入 AJAX 和用戶端功能

用戶端指令碼

ASP.NET 伺服器控制項的部分功能要視是否能夠執行用戶端指令碼而定。如果瀏覽器能夠執行指令碼,就會自動產生用戶端指令碼,並將其當做網頁的一部分傳送。不過即使如此,使用者還是可能會關閉瀏覽器中的指令碼執行功能,而因此無法使用控制項的完整功能。如需詳細資訊,請參閱 ASP.NET Web 網頁中的用戶端指令碼

使用舊版的瀏覽器

瀏覽器分為兩個群組:有時稱為「新版」(較新版本) 的瀏覽器和「舊版」(先前的版本) 瀏覽器。這些群組定義了瀏覽器所提供的原有支援類型,而且通常也決定了 Web 網頁的呈現方式和行為。

被視為「新版」的瀏覽器通常至少會支援下列項目:

  • ECMAScript (JScript、JavaScript) 1.2 版。

  • HTML 4.0 版。

  • Microsoft 文件物件模型 (MSDOM)。

  • 階層式樣式表 (CSS)。

「舊版」瀏覽器和用戶端裝置則僅支援下列項目:

  • HTML 3.2 版

下列資料表列出的伺服器控制項屬性,在新版和舊版瀏覽器中所呈現的方式不同。

伺服器控制項屬性

在新版和舊版瀏覽器中所呈現的行為

AccessKey

這個屬性無法在任何舊版瀏覽器的任何控制項上作用。它不是 HTML 4.0,而且只能在 Internet Explorer 4.0 (含) 以後版本中作用。

BackColor

這個屬性只能在舊版瀏覽器的某些控制項上作用:TablePanelGridViewCalendarValidationSummary。它也能夠在 CheckBoxListRadioButtonListDataList 上作用 (如果配置是在 Table 控制項中)。一般來說,在 HTML 3.2 中只有呈現為 table 項目的控制項才可以輸出背景色彩,而在 HTML 4.0 中幾乎所有控制項都可這麼做。對於在 span 項目中呈現的控制項 (包括在 Flow 模式中的 Label 控制項、驗證程式控制項和清單控制項) 而言,BackColor 可以在 Internet Explorer 5 (含) 以後版本中作用,但 Internet Explorer 4.0 中則不行。

BorderColor

這個屬性可以在舊版瀏覽器上作用,但只限於與 BackColor 一樣的表格架構控制項。然而,它會輸出為 bordercolor 屬性,而這並不是 HTML 3.2 標準的一部分。有些瀏覽器支援這個屬性 (Attribute),包括 Internet Explorer 3.0 及更新版本,但不是所有的瀏覽器都支援。

BorderStyle

這個屬性不能在任何舊版瀏覽器上作用。在 HTML 3.2 中並沒有對等用法。

BorderWidth

這個屬性在呈現為 HTML table 項目 (TablePanelGridViewCalendar) 或 img 項目 (ImageAdRotator) 的控制項上才有作用。BorderWidth 在舊版瀏覽器上才有作用 (如果指定單位為像素);否則,永遠都會呈現為 border=1 或 border=0。此外,BorderWidth 在表格架構控制項才有作用 (如果 GridLines 設定為 None 以外的值)。這是因為在 HTML 3.2 中如果不使用格線就無法指定框線。對於在 span 項目中呈現的控制項 (包括在 Flow 模式中的 Label 控制項、驗證程式控制項和清單控制項) 而言,BorderWidth 可以在 Internet Explorer 5 (含) 以後版本中作用,但 Internet Explorer 4.0 中則不行。

CssClass

這個屬性 (Property) 永遠都會呈現為 class 屬性 (Attribute),不論是何種瀏覽器。多數新版瀏覽器都能夠辨認 class 屬性。

Enabled

這個屬性是用來指定控制項是否要引發其事件和函式。在 Internet Explorer 4.0 (含) 以後版本中,將 Enabled 設定為 false 會使用 disabled=true 屬性將控制項顯示為無法使用並將其鎖定而無法輸入。

Font-Bold、Font-Italic、Font-Strikeout 和類似的屬性

這些屬性 (Property) 會呈現為新版瀏覽器的 style 屬性 (Attribute) (例如,粗體是 Font-Weight,而斜體是 Font-Style),以及舊版瀏覽器的獨立項目 (例如,b 和 i)。

Font-Size

只有在使用具名字型大小 (Small、Smaller 等) 時,這個屬性才可以在舊版瀏覽器的任何控制項上作用。在新版瀏覽器中,這個屬性 (Property) 呈現為 style 屬性 (Attribute);在舊版瀏覽器中則呈現為 font 項目。

Font-Overline

這個屬性不能在任何舊版瀏覽器上作用。

ForeColor

這個屬性可以在舊版瀏覽器的所有控制項上作用,除了 ImageAdRotatorHyperLinkLinkButton 以外。在舊版瀏覽器中,ForeColor 會透過 font 項目呈現。

Height

這個屬性無法在舊版瀏覽器的 Label 控制項、驗證程式控制項、HyperLink 控制項或 LinkButton 控制項上作用。如果這些控制項的配置設定為 Flow,Height 也無法在 CheckBoxListRadioButtonListDataList 控制項上作用。只有像素和百分比度量才能作用。

對於表格架構控制項,不為舊版瀏覽器呈現內部表格上的高度,因為 HTML 4.01 中沒有 Height 屬性。因此,新舊版本之間的外觀呈現會有所不同,其中最顯著的差異是,如果在 SideBarStyle 屬性上設定 BackColor:BackColor 在新版中看來好像該欄的整個高度,而在舊版中則只會和所要求相符的文字按鈕一樣長。

TabIndex

這個屬性無法在任何舊版瀏覽器的任何控制項上作用。它不是 HTML 4.0,而且只能在 Internet Explorer 4.0 (含) 以後版本中作用。

ToolTip

這個屬性不能在任何舊版瀏覽器上作用。

Width

這個屬性無法在舊版瀏覽器的 LabelHyperLinkLinkButton 或驗證程式控制項上作用。如果配置設定為 Flow,Width 也無法在 CheckBoxListRadioButtonListDataList 控制項上作用。只有像素和百分比度量才能作用。

請參閱

工作

HOW TO:在 ASP.NET Web 網頁中偵測瀏覽器類型

逐步解說:開發和使用自訂的伺服器控制項

參考

ClientTarget

clientTarget 項目 (ASP.NET 設定結構描述)

HttpBrowserCapabilities

Browser

UserAgent

WebControl

其他資源

以程式設計 ASP.NET Web 網頁

開發自訂的 ASP.NET 伺服器控制項