在很久很久以前,江湖忽然风起云涌,在当中有两个帮派统治着世界,他们就是HTML和NCSA Mosaic。许多日子过去了,一个叫Netscape Navigator的武林高手创造了一种叫HTML扩展的工夫,开始在自身标明“支持Netscape扩展”。当然,每个门派的功夫是不会外传,也就是说“Mosaic中的人不会用。后来,一个新兴的帮派Microsoft带着它的INternet Explorer出现了,顿时间,江湖风浪再起,Mosaic渐渐退出最强的竞争,Microsoft和Netscape两大帮派为了利益不断的扩展HTML,还好的是,它们都可以支持JavaScript。
再后来,Netscape被America Online吞并,但仍然将他们的工夫提升到第六级:Netscape 6,如今已是Netscape 7,但IE已经占据了天下。当然有些人还在联系低级的版本,所以,我们这些卖武器的问题就来了:如何判断用户端使用的浏览器类型从而相应的修改你的网站呢?
如何知道什么浏览器在访问我的站点
navigator对象提供了有关浏览器的信息,无论该浏览器是Netscape Navigator,Internet Explorer还是其他什么!
表1:浏览器对象的属性
navigator.appName 浏览器的名字
navigator.appVersion 浏览器的版本
navigator.userAgent 浏览器的”用户代理“,这是浏览器或可以访问WEB的阅读器使用的官方术语,如手持设备或WEBTV。
表2:不同浏览器上的navigator属性
-------------------------------------------------------------
-------------------------------------------------------------
我们可以像访问其他对象一样来访问navigator对象。
如:document.write("Welcome all" + navigator.appName + "users.");
不过没必要这么做,检查浏览器身份的目的是让你的网页(或整个网站)适应不同的浏览器。
现在就让我们来看一个带有浏览器版本检测功能的HTML文档:
<html>
<head>
<title>A Smart Page </title>
<script language="JavaScript">
//check browser name and version and assign ifo to variable
var browserName = navigator.appName;
var browserVersion = ParseInt(navigator.appVersion);
var browser;
if (browserName == "Netscape" && browserVersion == 5) {
browser = "nn6";
}
else if (browserName == "Netscape" && browserVersion == 4) {
browser = "nn4";
}
else if (browserName == "Microsoft Inernet Explorer" && browserVersion == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1) {
browser = "ie6";
}
else if (browserName == "Microsoft Internet Explorer" && browserVersion == 4 && navigator.appVersion.indexOf("MSIE 5.5") !=-1) {
browser ="ie55";
}
else if (browserName == "Microsoft Internet Explorer" && browserVersion == 4 && navigator.appVersion.indexOf("MSIE 5.0") !=-1) {
browser = "ie5";
}
else if (browserName == "Microsoft Internet Explorer" && browserVersion == 4) {
browser = "ie4";
}
//Handle browser-specific code
if (browser == "nn6" || browser == "ie6" || browser == "ie55" || browser == "ie5") {
//Latest JavaScript code goes here
alert("你的浏览器版本是最新的");
}
else if (browser == "nn4") {
//Specific code for Netscape Navigator 4 goes here
alert("你的浏览器版本不是最新的" + brower.appName + brower.appVersion +",建议你更新");
}
else if (browser == "ie4") {
//Specific code for Internet Explorer 4 goes here
alert("你的浏览器版本不是最新的" + brower.appName + brower.appVersion +",建议你更新");
}
</script>
</head>
<body>
<!--This is where standard HTML goes-->
<script>document.write("检测完毕")</script>
</body>
</html>
解释一下:
parseInt是JavaScript内部函数之一 ,用来提取整数部分。
为什么要用indexOf()呢?因为IE的不同版本比Navigator要复杂,Internet wcplorer6,5.5,5,he 4都是返回一个版本号4。这样我们就要appVersion的“MSIE #.#”部分!
在浏览器检测中有很多微笑的差别,不过网上有好多!
http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
大家可以到这里看一下,我英文不是太好,要开金山! |