使用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

相關文章
相關標籤/搜索