<<<返回

浏览器能力检测组件是怎样工作的
如果你能够了解浏览器检测组件工作的机理，那么你就可以更好的意识到它的一些缺陷。其实这个组件还是利用了HTTP请求的Header和一个文本文件进行比较来获取浏览器信息。 当浏览器发出一个请求时，其中就包括了USER-AGENT的Header。这个Header 就包括了浏览器的类型和版本信息，你当然可以利用Request对象的ServerVariables集合来仔细分析这段Header，就是下面这个脚本： <%=Request.ServerVariables(“HTTP_USER_AGENT”) %>
假如使用Netscape3.0，显示为：
Mozilla/3.0 (winNT; I)
需要了解的是这是唯一传递的关于浏览器的信息，浏览器能力检测就只能依靠这么个简单的信息，那么直接检测显然是做不到的。
其实浏览器检测组件是将接受到的这个Header与一个特定的文件Browscap.ini进行比较，这个文件位于服务器，当你安装了Active Server Pages时，这个文件自动安 装，这下你应当意识到应该装最新版本了吧。
Browscap.ini只是一个文本文件，它包含了浏览器的特性，例如，对于Netscape2.0
是下面这段文本说明：
[Netscape 2.0]
browser=Netscape
version=2.0
majorver=2
minorver=0
frames=TRUE
tables=TRUE
cookies=TRUE
backgroundsounds=FALSE
vbscript=FALSE
javascript=TRUE
javaapplets=TRUE
beta=FALSE
win16=FALSE
其实浏览器能力检测组件就是依靠这个来检测浏览器能力的，你可以来改变这个文本文件，这样检测出的结果就是你觉得想要的而不是事实上的。
有相当多的应当检测的浏览器特性没有检测到，例如，很常用的安全接口层技术(SSL)和CSS技术，由于在Browscap.ini中没有相关信息。自然这个组件也就无从判别，但是你可以通过修改文本文件的方法来自行进行这种定义。例如，在上面的那段文本说明后面添加下面这两行：
SSL=TRUE
CSS=FALSE
那么浏览器能力检测组件就可以对这种特性进行报告，当它检测到一个Netscape2.0时，这个组件就认为浏览器具有这两个属性，例如，如果使用下面这个脚本，就会显示TRUE这个信息。
<%=MyBrow.SSL %>
你也许会注意到在browscap.ini文件中有这样的对浏览器的限定，如下：
[Mozilla/2.0 (Win95; U)]
parent=Netscape 2.0
platform=Win95
当浏览器具有‘母’参数时，那么这个限定就会继承其他所有特性，前面这个限定就继承了所有Netscape2.0的特性，例如：尽管没有说Win95下面的Netscape2.0是否还保留分屏方式，但是由于对Netscape2.0的特性中已经认定其支持，所以浏览器能力检测组件依然会报告说其支持分屏。
由于母参数限定，就没有必要一遍一遍重复输入相同信息，只需要对于一些特别信息创建小的子限定就可以了。如果两种限定发生冲突，那么子限定优先。
浏览器能力检测参数只能在browscap.ini中进行比较得出，如果谁的浏览器没有在这个文件中出现（比如哪个大侠一时神勇，自己编了一个浏览器）那么将被视为默认浏览器，下面是这个默认浏览器的限定（看来不太妙）
[Default Browser Capability Settings]
browser=Default
version=0.0
majorver=#0
minorver=#0
frames=False
tables=True
cookies=False
backgroundsounds=False
vbscript=False
javascripts=False
javaapplets=False
activexcontrols=False
AK=False
SK=False
AOL=False
beta=False
win16=False
Crawler=False
CDF=False
再一次说明，这个文本你也可以进行修改（当然，首先你必须是站长），例如，你确实认为有的浏览器连表格也处理不了，就将tables赋值为False就行了。
注：你可以到http://www.microsoft.com/iis目录下寻找相关部分来更新你的browscap.ini文件，也可以去第三方的网站寻找，例如www.cyscape.com/asp/browscap/