JavaScript-手机中访问页面判断
最近在做微信服务号开发,其中遇到一个问题是微信服务号查看的个人的消息,如果点击在浏览器中查看(iOS中是在Safari中打开)应该是跳转到登录页面,因为页面需要从后台获取,因为需要服务端判断,如果是存页面不需要后台数据可以在前台进行判断,因为后台是NodeJS,所以给出客户端和服务端两个版本的代码供参考。
客户端判断
方法很简单,就是通过userAgent去判断,先判断是否为移动端,可以判断是iOS终端和Android终端,也可以具体到应用进行判断微信,微博,qq访问:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 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判断,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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; |
基本的判断都有,可以根据判断的结果给出不同的响应~
本文转自Fly_Elephant博客园博客,原文链接:http://www.cnblogs.com/xiaofeixiang/p/5013028.html,如需转载请自行联系原作者
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Siri 会如何进化?今年 WWDC 可能会让你大开眼界
苹果在每一代 iPhone 又或者是 iOS 身上都对 Siri 进行了更新,但目前仍然有大量的事例表明 Siri 的最大硬伤:响应速度不快、信息提供错误、不了解用户询问的问题等等。在今年的 WWDC 大会上,你希望看到什么样的 Siri 新特性? 不一样的邀请函 每一年的苹果全球开发者大会(WWDC)都是在 6 月份举行的,而苹果的邀请函也都会选择在 4 月份发出。所以,这已经成为了一个四月传统:苹果发出邀请函之后,外界都在纷纷猜测这一次大会究竟会出现什么样的新东西,而外界猜测的依据,往往就是 WWDC 大会的邀请函。 虽然大家对于 WWDC 邀请函的猜谜工作很是热情,但最终真正出现在大会上的内容总会有所差别。我们有注意到,今年苹果发出的邀请函有点特别,它不再是由各种有色图案组合在一起的一幅画,而是一个代码编辑版面,这下就很猜测了。不过,就在 WWDC 邀请函发出来之前,苹果的智能语音助理似乎已经先“泄密”了。 “WWDC 在什么时候” “全球开发者大会(WWDC)将于 6 月 13 日到 17 日在旧金山召开。我现在的心情十分激动!” 在正式邀请函发出之前,Siri 就这样把 WW...
- 下一篇
FireFox 开发方 Mozilla 裁员,Firefox OS 停摆
由浏览器引擎驱动的操作系统无法获得成功,共有 50 名员工被裁。 知名的 Firefox 火狐浏览器开发方,非营利机构 Mozilla 最近裁掉了设备工具组全部 50 名员工。这意味着,基于火狐浏览器引擎的操作系统 Firefox OS 彻底停摆了。 从 2013 年第一个商业化版本发布开始,Mozilla 就试图将 Firefox OS 安装到手机、平板和智能电视等产品中。 跟我们通常所理解的操作系统工作机制不太相同,Firefox OS 几乎全部使用 HTML 5、CSS 3、Javascript 和一部分 C++ 语言编写而成,内置了火狐浏览器的 Gecko 渲染引擎,利用开放的 web API 接口在手机上实现近似于本地软件的各种功能。 相比于另一个开源系统 Android 要求独立打包的本地 app,Firefox OS 上的应用在代码层面其实跟网站没什么区别,只不过展示样式更适合小尺寸触屏设备了。 受限于渲染引擎和 HTML 5 的性能,Firefox OS 很难提供媲美 Android 本地应用的流畅体验。在 Firefox OS 发展早期,只有少量硬件配置很差的低端入门...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Redis,开启缓存,提高访问速度
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS关闭SELinux安全模块
- CentOS8安装Docker,最新的服务器搭配容器使用
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS6,7,8上安装Nginx,支持https2.0的开启