博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript-手机中访问页面判断
阅读量:6160 次
发布时间:2019-06-21

本文共 2391 字,大约阅读时间需要 7 分钟。

最近在做微信服务号开发,其中遇到一个问题是微信服务号查看的个人的消息,如果点击在浏览器中查看(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, //苹果、谷歌内核            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;

基本的判断都有,可以根据判断的结果给出不同的响应~

转载于:https://www.cnblogs.com/xiaofeixiang/p/5013028.html

你可能感兴趣的文章
java中int和Integer对比的一些坑
查看>>
webpack创建library及从零开始发布一个npm包
查看>>
CoreMotion 框架
查看>>
Angular CLI 常用命令
查看>>
GNOME 3.32.1 维护版本更新发布
查看>>
NutzWk 5.2.0 重磅发布,Java 微服务分布式开发框架
查看>>
Gse v0.40.0 发布,Go 高性能分词,增加更多常用 API
查看>>
【Zabbix】通过iLO进行Zabbix监控——针对HP服务器集成
查看>>
MySQL Online DDL 方案剖析
查看>>
java源码 - ReentrantLock之FairSync
查看>>
Java入门系列-24-实现网络通信
查看>>
Nginx 配置
查看>>
eclipse错误及解决方法
查看>>
WPF自适应可关闭的TabControl 类似浏览器的标签页
查看>>
程序员技能图谱分享--极客时间
查看>>
iOS开发之通过代理逆向传值
查看>>
每天学点SpringCloud(八):使用Apollo做配置中心
查看>>
Jmockit单元测试MockUp调用原始方法
查看>>
顺风车Android性能优化之View布局优化
查看>>
Windows 7 延长支持服务价格曝光:一台电脑最低25美元
查看>>