<<<返回

在Application范围内创建组件
当你在Application范围内创建了组件事例，那么你可以把它当作内置对象进行处理，一旦创建，在任何页面，对于任何用户，使用任何方法、集合以及属性都是可以的。直到这个Application结束（网站服务终止，Global.asa改变，该application卸载）。 注：如果一个application范围的组件被创建，那么它的OnStartPage()和OnEndPage方法就无法调用。也许你在使用时会遇到这个问题。 你可以用和创建一个Session范围的组件十分类似的方法创建一个application范围的组件。第一种自然还是利用Server.CreateObject()方法进行，见下例：
<%
Set Application(“MyBrow”)=Server.CreateObject(“MSWC.BrowserType”)
%>
这里面，浏览器能力检测组件被赋给了一个application变量。你可以把这个脚本放在Global.asa文件的application_OnStart事件中，也可以在你认为合适的页面中进行。在这个组件事例创建成功后，你就完全可以把它当作Active Server Page的内置 对象来处理。
你当然还可以利用HTML的<Object>标记进行这种操作，如下：
<OBJECT RUNAT=”Server” SCOPE=”Application” ID=”MyBrow”
PROGID=”MSWC.BrowserType”></OBJECT>
在上面这个例子中，<Object>被用来创建一个application范围的组件事例。其中的SCOPE属性指定了这是一个application范围的事例而不是Session范围。其他的和上一个小节没有什么区别。
同样，你可以把<Object>放在Global.asa文件中，不过，再次提醒，千万不要自作聪明的放在任何事件的脚本程序中。
什么时候你需要创建一个application范围的组件呢？第17章检测站上用户的那个小节就是个典型的例子，该字典对象的事例用来跟踪所有人的信息，同时覆盖几乎所有页面，因此必须用application范围的变量，否则无法实现。
浏览器能力检测组件
对于互连网络迅猛发展的一个解释就是其开放的标准，HTML设计出来是要在任何电脑的任何浏览器上能够进行同样的显示，即用户平台与浏览器的无关性，但是现在，这已经不太可能了。从开始，NetScape引入专有的HTML标记，例如：NetScape1.0可以解释闪烁的文本，而现在，很多非Netscape的浏览器都不能进行解释。frame分屏则是NetScape对HTML扩展的另外一个例子。
在NetScape一支独秀的时候，由于用户选择面有限，还没有什么大问题，微软的强行抢滩使得标准不统一的现象更加严重。例如<BGSound>标记和<MARQUEE>标记现在只能在微软的IE上进行解释。前者播放背景音乐，而后者是滚动选取框。
HTML目前已经分割为两个标准，由于NetScape和IE相继推出新的版本，这种分歧已经可以用”Netscape HTML”和”Microsoft HTML”这样的说法来形容，这样对于网 站设计者来说就产生了很大的问题。
一方面，对于设计者为了建设最‘酷’的网站，就必须采用最新的HTML标记，这样才能吸引用户。
另一方面，网站设计者又必须考虑到用户的浏览器，因为没有人会赞赏他看不见的网页。一旦你使用了某一家的HTML扩展，那么就意味着失去了另外一家浏览器生产商的使用客户，要知道，现在二者各占有近一半的浏览器市场，因此对于网站设计者，这绝对是个伤脑筋的问题，因为你很可能因此失去相当数量的潜在访问者。
由于上述，网站设计者该如何处置呢？这里面就要提到浏览器能力检测组件的使用了。
使用浏览器能力检测组件
你可以根据浏览器检测组件来判断浏览器的类型并依此来显示不同的主页，这样，你可以尽量去使用最新的HTML扩展而在不支持的浏览器上显示别的东西。
注：根据你的电脑安装后的Browscap.ini的版本，你可以检测到比列出的那些还要多的浏览器特性。如果希望详细了解，参考后面介绍其检测原理的部分
你当然还可以利用ServerVariables集合来判断浏览器的分辨率，颜色数目等特性，这些只能在某些微软的浏览器上实现。参看第14章
默认的，可以检测到的浏览器特性如下：
·browser：顾名思义，就是浏览器类型，比如Internet Explore或者NetScape
·version：浏览器当前版本
·majorver：浏览器的主版本（小数点以前的）
·minorver：浏览器的辅版本（小数点以后的）
·frames：指示浏览器是否支持分屏方式
·tables：指示浏览器是否支持表格
·cookies：指示浏览器是否支持cookies
·backgroundsounds：指示浏览器是否支持<bgsound>标记
·vbscript：指示浏览器是否支持客户端vbscripts脚本
·javascripts：指示浏览器是否支持客户端javascripts脚本
·javaapplets：指示浏览器是否支持java applets。
·ActiveXControls：指示浏览器是否支持客户端ActiveX控件
·beta：指示浏览器是否还是测试版
·platform：检测目前用户所用的操作平台，例如，win95,winNt,或者Mac PowerPC
·win16：检测用户是用在16位的视窗(win31)系列还是32为的视窗系列（win95,winNT)
使用浏览器能力检测组件，你需要首先创建它的一个事例，然后只需要简单的将要检测的特性名称加到事例中就可以了。下面是这样的一个例子：
<HTML>
<HEAD><TITLE>浏览器能力检测示例</TITLE></HEAD>
<BODY>
<%
Set MyBrow=Server.CreateObject(“MSWC.BrowserType”)
%>
你的浏览器有如下特性：
<P>
<TABLE Border=1 Cellspacing=10>
<tr>
<td>浏览器类型</td><td><%=MyBrow.Browser %></td>
</tr><tr>
<td>分屏方式</td><td><%=MyBrow.Frames %></td>
</tr><tr>
<td>Cookies</td><td><%=MyBrow.Cookies %></td>
</tr><tr>
<td>操作平台</td><td><%=MyBrow.platform %></td>
</tr><tr>
<td>VBScript</td><td><%=MyBrow.vbscript %></td>
</tr></TABLE>
</BODY>
</HTML>
这个脚本检测用户浏览器的特性并且进行显示，对于不同的用户，显然根据其浏览器显示不同结果，下面是一个显示结果：
您的浏览器有如下特性：
浏览器类型
Netscape
分屏方式
True
Cookies
True
操作平台
WinNT
VBScript
False