使用JavaScript判斷使用者是否為手機裝置

來源:互聯網
上載者:User

標籤:

最近在做服務號開發,其中遇到一個問題是服務號查看的個人的訊息,如果點擊在瀏覽器中查看(iOS中是在Safari中開啟)應該是跳轉到登入頁面,因為頁面需要從後台擷取,因為需要服務端判斷,如果是存頁面不需要後台資料可以在前台進行判斷,因為後台是NodeJS,所以給出用戶端和服務端兩個版本的代碼供參考。

用戶端判斷

方法很簡單,就是通過userAgent去判斷,先判斷是否為移動端,可以判斷是iOS終端和Android終端,也可以具體到應用進行判斷,微博,qq訪問:

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, //蘋果、Google核心
  gecko: u.indexOf(‘Gecko‘) > -1 && u.indexOf(‘KHTML‘) == -1, //Firefox核心
  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, //蘋果、Google核心
    gecko: u.indexOf(‘Gecko‘) > -1 && u.indexOf(‘KHTML‘) == -1, //Firefox核心
    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;
基本的判斷都有,可以根據判斷的結果給出不同的響應~

使用JavaScript判斷使用者是否為手機裝置

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.