使用JavaScript判断用户是否为手机设备

最近在作微信服务号开发,其中遇到一个问题是微信服务号查看的我的的消息,若是点击在浏览器中查看(iOS中是在Safari中打开)应该是跳转到登陆页面,由于页面须要从后台获取,由于须要服务端判断,若是是存页面不须要后台数据能够在前台进行判断,由于后台是NodeJS,因此给出客户端和服务端两个版本的代码供参考。android

客户端判断ios

方法很简单,就是经过userAgent去判断,先判断是否为移动端,能够判断是iOS终端和Android终端,也能够具体到应用进行判断微信,微博,qq访问:web

var browser = {
  versions: function() {
  var u = navigator.userAgent,
  ua = navigator.userAgent.toLowerCase();
  return { //移动终端浏览器版本信息
  trident: u.indexOf('Trident') > -1, //IE内核
  presto: u.indexOf('Presto') > -1, //opera内核
  webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
  gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
  mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
  ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
  android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
  iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
  iPad: u.indexOf('iPad') > -1, //是否iPad
  webApp: u.indexOf('Safari') == -1 ,//是否web应该程序,没有头部与底部
  wechat:ua.match(/MicroMessenger/i) == "micromessenger",//微信
  weibo:ua.match(/WeiBo/i) == "weibo",//微博
  qq:ua.match(/QQ/i) == "qq"//qq
};
}(),
language: (navigator.browserLanguage || navigator.language).toLowerCase()
};
console.log(navigator.userAgent);
服务端判断浏览器

NodeJS一样也是经过userAgent判断,代码以下:微信


var browser= function(req) {
  var u = req.headers['user-agent'];
  var ua = u.toLowerCase();
  //移动终端浏览器版本信息
  return {
    trident: u.indexOf('Trident') > -1, //IE内核
    presto: u.indexOf('Presto') > -1, //opera内核
    webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
    gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
    mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
    ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
    android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或uc浏览器
    iPhone: u.indexOf('iPhone') > -1, //是否为iPhone或者QQHD浏览器
    iPad: u.indexOf('iPad') > -1, //是否iPad
    webApp: u.indexOf('Safari') == -1, //是否web应该程序,没有头部与底部
    wechat: ua.match(/MicroMessenger/i) == "micromessenger",//微信
    weibo: ua.match(/WeiBo/i) == "weibo",//微博
    qq: ua.match(/QQ/i) == "qq"//QQ空间
};
};

exports.browser=browser;
基本的判断都有,能够根据判断的结果给出不一样的响应~ide

相关文章
相关标签/搜索