<INPUT TYPE="SUBMIT" NAME="cmdRemove" VALUE=" "> Counter.Remove (" <SELECT NAME="lstRemove" SIZE="1"> <OPTION VALUE="wrox">Wrox Press</OPTION> <OPTION VALUE="stonebroom">Stonebroom</OPTION> <OPTION VALUE="xtras">Xtras</OPTION> <OPTION VALUE="compsrc">ComponentSource</OPTION> <OPTION VALUE="fourcds">Four CDs</OPTION> <OPTION VALUE="lunar">Lunar</OPTION> </SELECT> ")<P> … </FORM> 當載入頁面時,通過檢查Request.Form集合查看點擊的按鈕,如果找到了某個按鈕,將運行代碼的相應部分。在點擊Remove按鈕的情況下,相應的代碼是: If Len(Request.Form("cmdRemove")) Then strCounterName = Request.Form("lstRemove") 'get the counter name objCounters.Remove strCounterName Response.Write "Removed counter '<B>" & strCounterName & "</B>'.<P>" End If 對于Set方法,情況類似,但不僅僅需要從文本框中讀取新值,而且在調用Set方法之前,檢查文本框中的值是否是有效值。 If Len(Request.Form("cmdSet")) Then strCounterName = Request.Form("lstSet") 'get the counter name strNewValue = Request.Form("txtSet") 'get the new value If IsNumeric(strNewValue) Then 'if it can be converted to a number intNewValue = CInt(strNewValue) '… then convert it objCounters.Set strCounterName, intNewValue Response.Write "Set counter '<B>" & strCounterName & _ "</B>' to <B>" & strNewValue & "</B>.<P>" Else Response.Write "<B>'" & strNewValue & "</B>' is not a valid number.<P>" End If End If 使用頁面中的按鈕調用Counters對象的方法時,重新載入時會在頁面頂端看到一段信息和計數器中的新值,如圖6-7所示:
圖6-7 調用Counters對象的方法重新載入頁面
6.2.5 Browser Capabilities組件 創建各種Web網頁時面臨的問題之一是,不僅僅使用ASP技術創建動態網頁,而且能夠使用HTML元素和其他客戶端技術,像java Applets、ActiveX控件以及最近出現的HTML元素。需要意識到的是,一些訪問者若使用了恰好不支持它們的瀏覽器,那么對于精心編制的網頁,訪問者看到的可能是文本、圖像的雜亂組合,甚至更糟糕的還有相應工作的腳本程序代碼。 這里不討論應當如何設計支持各種不同瀏覽器的網頁(如果想了解這方面更多的內容,可以查閱Alex Homer編寫的,Wrox出版的《Professional ASP Techniques for Webmasters》一書,書號是ISN 1-861001-79-7)。然而,確實要引用某個頁面時,ASP和IIS提供鐵Browser Capabilities服務器組件可以用來檢測瀏覽器所支持的相關特征。 用戶請求來自服務器的頁面時,瀏覽器傳送的HTTP報頭包含了正在使用的瀏覽器的細節。在HTTP-speak(它被稱為用戶代理字符串)中,定義了瀏覽器的名稱、版本、操作系統及其兼容性。Browser Capabilities組件在自己的配置文件中查找這個字符串,并采用許多與瀏覽器特征等同的特性。因此,在網頁運行的任何時候,Browser Capabilities組件能夠提供支持或不支持某個特性的細節。 在ASP 3.0版本中,Browser Capabilities組件增加了一個新特性。在ASP頁面中包含METADATA指令,指示組件從瀏覽器中取出一個cookie,并把其包含的任意值添加到當前的組件實例中作為新屬性。這提供了一種方法,從瀏覽器收集更多的用戶特定的信息,而不僅僅是通常從browscap.ini文件中得到的瀏覽器指定的信息。了解了現有的瀏覽器檢測特性如何工作后,再回頭介紹新的METADATA技術。 1. browscap.ini文件 Browser Capabilities組件使用一個基于服務器的browscap.ini文本文件,該文本文件必須和browscap.dll組件文件處于同一目錄中。browscap.ini文件包含大多數關于以前和當前瀏覽器的信息,并且當瀏覽器的用戶代理字符串與文件中的指定字符串都不匹配時,將使用browscap.ini文件中的缺省部分。所以添加關于瀏覽器的新信息或者更新現有的信息,只需編輯browscap.ini文件。 首先看一下browscap.ini文件的格式,該文件中的所有條目都是可選的。擔包括缺省部分是非常重要的。如果使用的瀏覽器與browscap.ini文件中的任何一個都不匹配,并且沒有指定缺省瀏覽器設置,那么所有的特性將設置成“UNKNOWN”。 下面是browscap.ini文件的格式: ; we can add comments anywhere, prefaced by a semicolon like this
; entry for a specific browser [HTTPUserAgentHeader] parent = browserDefinition property1 = value1 property2 = value 2 …