通过navigator.userAgent判断各个不同浏览器

var browser = {
    version : function(){
        var u = navigator.userAgent, app = navigator.appVersion;
        return {
           //IE内核
           trident: u.indexOf('Trident') > -1, 

           //opera内核
           presto: u.indexOf('Presto') > -1,

           //苹果、谷歌内核 
           webKit: u.indexOf('AppleWebKit') > -1, 

           //火狐内核
           gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') ==-1,

           //是否为移动终端
           mobile: !!u.match(/AppleWebKit.*Mobile.*/), 

           //ios终端
           ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), 

           //android终端
           android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1,

           //是否为iPhone或者QQHD浏览器 
           iPhone: u.indexOf('iPhone') > -1 , 

           //是否iPad
           iPad: u.indexOf('iPad') > -1, 

           //是否web应该程序,没有头部与底部
           webApp: u.indexOf('Safari') == -1, 

           //是否微信
           weixin: u.indexOf('MicroMessenger') > -1,

           //是否QQ 
           qq: u.match(/\sQQ/i) == " qq"
        };
    }(),
    language:(navigator.browserLanguage || 
    navigator.language).toLowerCase()
}

1、关于!!的解释:!为否定,!!为否定的否定,就是肯定,在这里是为了将非布尔类型的数据转换为布尔类型。虽然在JavaScript中undefined,0,‘’都可以代表false,但还是有所不同。例如:var a, b = 123; var c = a || b 和 c = !!a || !! b 结果是不一样的,前者c=123, 后者 c = true。

2、关于匹配ios终端正则的解释:\( 通过转义,将“(”转义为字符,而非正则表达式中的分组符。[^;]+表示匹配非“;”的一个或多个字符。( U;)?表示匹配零组或多组“U;”。

3、\s:匹配任何空白字符。

转载于:https://my.oschina.net/zerzer/blog/1438885

你可能感兴趣的:(通过navigator.userAgent判断各个不同浏览器)