在进行前端页面开发的时候,往往需要针对不同的浏览器,不同的平台显示不同的效果,这就需要能够检测到当前页面所在的环境。
判断需求
- 检测是否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')
}