您的位置:首页 > Web前端 > JavaScript

JS判断浏览器

2016-05-27 19:15 381 查看
上午的时候,本来是想做一个position:fixed在各个浏览器下兼容的方案的,但是发现ie7/8下面的position:fixed只支持一个屏幕,如果内容高度超过一个屏幕就不能很好的使用position:fixed了(如果哪个同学有position:fixed的完美方案麻烦给我一下),于是我想用js来兼容,其实就是通过scroll监听来实现,于是需要判断ie7/8这俩版本,但是发现jquery的$.browser.version并不支持ie8,于是我就百度,百度倒是给出很多答案,但是发现ie8还是没能检测出来,后来我自己查看了navigator.userAgent这个东西,在各个浏览器下面打出来是这个样子的:

//ie9 : Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

//ie8 : Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

//ie7 : Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.3; Tablet PC 2.0; .NET4.0E; .NET4.0C)

//Mozi: Mozilla/5.0 (Windows NT 6.1; rv:20.0) Gecko/20100101 Firefox/20.0

//goog: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22

//oper: Opera/9.80 (Windows NT 6.1; Edition IBIS) Presto/2.12.388 Version/12.14

//appl: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2

  你就发现,ie8和ie9是一样的,这下子蒙了,看来光靠这个navigator.userAgent是不够了,但是我相信你也很快就知道怎么做了,因为i9还是一个比较先进的浏览器,拥有一些ie8没有的属性,我不一一罗列了,其中一个就是window.innerWidth,这个属性值是浏览器的内高度(不包括工具栏和滚动条,还是一个比较有用的属性)。ie8下面这个属性值是undefined,9下面就ok了,显示的是一个数字。于是判断浏览器版本就很自然了,看下面这个方案:

if(navigator.userAgent.indexOf(“MSIE”)>0){

if(navigator.userAgent.indexOf(“MSIE 6.0”)>0){

alert(“ie6”);

}

if(navigator.userAgent.indexOf(“MSIE 7.0”)>0){

alert(“ie7”);

}

if(navigator.userAgent.indexOf(“MSIE 9.0”)>0 && !window.innerWidth){//这里是重点,你懂的

alert(“ie8”);

}

if(navigator.userAgent.indexOf(“MSIE 9.0”)>0){

alert(“ie9”);

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: