• 认真地记录技术中遇到的坑!

JavaScript判断Android,IOS或者浏览器方法

JavaScript 悠悠 2年前 (2017-12-02) 1322次浏览 0个评论

在进行前端页面开发的时候,往往需要针对不同的浏览器,不同的平台显示不同的效果,这就需要能够检测到当前页面所在的环境。

判断需求

  • 检测是否PC端还是移动端
  • 检测是Android还是iOS
  • 检测浏览器类型,如判断是佛微信浏览器,QQ浏览器
  • 判断平台类型:iPhone,iPad,iOS,Android等

判断方法

通过获取浏览器的全局对象 navigator.userAgent ,其中包含当前运行环境的相关信息,结果是一个只读字符串,通过匹配这个字符串中的关键词判断当前运行环境。

解决方案

var browser = {
    versions: function() {
        var u = navigator.userAgent;
        return {
            // 判断是否IE内核
            trident: u.indexOf('Trident') > -1,
            // 判断是否opera内核
            presto: u.indexOf('Presto') > -1,
            // 判断是webKit苹果谷歌内核
            webKit: u.indexOf('AppleWebKit') > -1,
            // 判断是否火狐内核
            gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1,

            // 判断浏览器类型
            firefox: u.indexOf('Firefox') > -1,
            chrome: u.indexOf('Chrome') > -1,
            safari: !u.indexOf('Chrome') > -1 && u.indexOf('Safari') > -1,
            opera: u.indexOf('Opera') > -1,
            ie: u.indexOf('MSIE') > -1

            // 判断是否为移动终端
            mobile: !!u.match(/AppleWebKit.*Mobile.*/),
            // 判断是否为Windows平台
            windows: u.indexOf('Windows'),

            // 判断是否ios终端
            ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
            // 判断是否android终端
            android: u.indexOf('Android') > -1 || u.indexOf('Adr') > -1,
            // 判断是否为iPhone终端
            iPhone: u.indexOf('iPhone') > -1 ,
            // 判断是否iPad
            iPad: u.indexOf('iPad') > -1,
            // 判断是否iPod
            iPod: u.indexOf('iPod') > -1,
            //是否web应用程序
            webApp: u.indexOf('Safari') == -1,

            // 判断是否微信浏览器
            weixin: u.indexOf('MicroMessenger') > -1,
            // 判断是否为QQ浏览器
            qq: u.match(/\sQQ/i) == " qq" //是否QQ
        }
    }()
};

如果使用单个,可以拆开使用:

var isWeixin = navigator.userAgent.indexOf('MicroMessenger') > -1;

使用方法:

if (browser.versions.weixin) {
    alert('is weixin')
}

喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址