第8章:检测浏览器和操作系统

navigator对象
8.2浏览器的检测方式

1.对象/特征检测法

eg.if(document.getElementById){
//some code
}else{
//some code
}
如果document.getElementById不被支持,则返回undefined,转成boolean,则就是false,所以可以用些方法来检测.

2.user-agent字符串检测法.

userAgent属性.
var sUserAgent=navigator.userAgent;
返回一些基本的字符串.不同浏览器,不同的.

下面为一些基本的..仅供参考



IE 5.5:
appName:Microsoft Internet Explorer
userAgent:Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322)

IE 6:
appName:Microsoft Internet Explorer
userAgent:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322)

IE 7:
appName:Microsoft Internet Explorer
userAgent:Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322)

IE 8:
appName:Microsoft Internet Explorer
userAgent:Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; InfoPath.1; .NET CLR 1.1.4322)

Firefox:
appName:Netscape
userAgent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5 (Amon注:Windows)
Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.0.4) Gecko/2008111318 Ubuntu/8.10 (intrepid) Firefox/3.0.4 (Amon注:Ubuntu Linux)

SeaMonkey:
appName:Netscape
userAgent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.19) Gecko/20081204 SeaMonkey/1.1.14 (Amon注:Windows)
Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.8.1.17) Gecko/20080829 SeaMonkey/1.1.12 (Ubuntu-1.1.12+nobinonly-0ubuntu1) (Amon注:Ubuntu Linux)

Safari:
appName:Netscape
userAgent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN) AppleWebKit/525.19 (KHTML, like Gecko) Version/3.1.2 Safari/525.21

Chrome:
appName:Netscape
userAgent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.19 (KHTML, like Gecko) Chrome/1.0.154.36 Safari/525.19

Opera:
appName:Opera
userAgent:Opera/9.63 (Windows NT 5.1; U; Edition IBIS; zh-cn) Presto/2.1.1 (Amon注:Windows)
Opera/9.63 (X11; Linux i686; U; zh-cn) Presto/2.1.1 (Amon注:Ubuntu Linux)

Konqueror:
appName:Netscape
userAgent:Mozilla/5.0 (compatible; Konqueror/4.1; Linux) KHTML/4.1.2 (like Gecko)





8.3 user-agent发展简史

第一代:
Netscape Navigator 与 IE3.0

<script type="text/javascript">
//找到最早期的检测方法,找到IE
if(navigator.userAgent.indexOf('MSIE')>-1){
if(navigator.userAgent.indexOf('MSIE 3.')){
//for IE3.0
//for some code;
}
}else if(parseFloat(navigator.appVersion)>=3){
//3.0版本以上
//for 其它浏览器版本3.0以上;

}
</script>




第二代:

Netscape Communicator 4.0 与ie4.0
netsacpe跟原来的一样
ie4.0将Mozilla改成4.0

ie4.5 Mozilla为4.0 但是MSIE为4.5,此浏览器在MacOs系统上发布

IE5.0 及更高版本.
Mozilla为4.0 5.0版为MSIE5.0
IE6.0浏览器为Mszilla为4.0,MSIE为6.0

8.3.4
Mozilla
8.3.5
Opera:可以将其伪装成另一种浏览器的能力;
8.3.6
Safari基于一个叫KHTML的项目.

浏览器检测版本
最好的方法是检测它的最小版本开始.
用到的函数有以下.

比较函数,检测一种浏览器最低版本的基础函数,后面大量用到此函数:

//比较函数
var sUserAgent = navigator.userAgent;
var fAppVersion = parseFloat(navigator.appVersion);
function comparenVersions(sVersion1, sVersion2){
var aVersion1 = sVersion1.split(".");
var aVersion2 = sVersion2.split(".");
if (aVersion1.length > aVersion2.length) {
//补0;版本号长度比较短的..则补0,等长度一样,才能进行版本比较;
for (i = 0; i < aVersion1.length - aVersion2.length; i++) {
aVersion2.push("0");
}
}
else
if (aVersion1.length < aVersion2.length) {
for (i = 0; i < aVersion2.length - aVersion1.length; i++) {
aVersion1.push("0");
}
}
for (var i = 0; i < aVersion1.length; i++) {
//转为10进制然后进行比较;
iVar1 = parseInt(aVersion1[i], 10);
iVar2 = parseInt(aVersion2[i], 10);
if (iVar1 > iVar2) {
return 1;
//如果aVersion1的数字大于aVersion2数字,则返回1;
}
else
if (iVar1 < iVar2) {
return -1;
}

}
//如果测试了所有的数字,没有返回值,那么函数返回一个0;表示两个版本相等;
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值