JS判断当前页面是否在微信浏览器打开的方法


Posted in Javascript onDecember 08, 2015

本文实例讲述了JS判断当前页面是否在微信浏览器打开的方法。分享给大家供大家参考,具体如下:

最近做很多HTML5的项目,很多页面会通过微信微博等SNS分享出去。在分享页面上提供公司APP的下载。但是在很多应用的浏览器中,点击下载链接无法下载应用。那么针对这些浏览器我们需要给用户提示从safari或者系统自带的浏览器打开分享页面。通过js就可以判断当前页面是在什么浏览器打开的。

以下是一段示例代码,注释中表明了通过JS如何判断是否在微信浏览器打开,是否在QQ空间浏览器,是否在新浪微博打开。当然可以做得更完善一点,再加上判断是在移动设备打开还是在PC端浏览器打开的,更加细分一点,可以判断是在安卓系统的浏览器打开的还是IOS系统浏览器打开的。

if (browser.versions.mobile) {//判断是否是移动设备打开。browser代码在下面
  var ua = navigator.userAgent.toLowerCase();//获取判断用的对象
  if (ua.match(/MicroMessenger/i) == "micromessenger") {
    //在微信中打开
  }
  if (ua.match(/WeiBo/i) == "weibo") {
    //在新浪微博客户端打开
  }
  if (ua.match(/QQ/i) == "qq") {
    //在QQ空间打开
  }
  if (browser.versions.ios) {
    //是否在IOS浏览器打开
  } 
  if(browser.versions.android){
    //是否在安卓浏览器打开
  }
} else {
  //否则就是PC浏览器打开
}

再附上browser的代码,通过以下方法可以判断很多浏览器。包括判断IE浏览器,Opera浏览器,苹果浏览器,谷歌浏览器,火狐浏览器等。

var browser = {
 versions: function () {
  var u = navigator.userAgent, app = navigator.appVersion;
  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应该程序,没有头部与底部
  };
 }(),
 language: (navigator.browserLanguage || navigator.language).toLowerCase()
}

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JavaScipt中的Math.ceil() 、Math.floor() 、Math.round() 三个函数的理解
Apr 29 Javascript
ASP.NET jQuery 实例7 通过jQuery来获取DropDownList的Text/Value属性值
Feb 03 Javascript
JavaScript的setAttribute兼容性问题解决方法
Nov 11 Javascript
node.js中的path.extname方法使用说明
Dec 09 Javascript
JS取得绝对路径的实现代码
Jan 16 Javascript
JS中call/apply、arguments、undefined/null方法详解
Feb 15 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
Jul 19 jQuery
详解在React里使用"Vuex"
Apr 02 Javascript
详解element-ui日期时间选择器的日期格式化问题
Apr 08 Javascript
vue实现登录页面的验证码以及验证过程解析(面向新手)
Aug 02 Javascript
vue使用better-scroll实现滑动以及左右联动
Jun 30 Javascript
vue使用keep-alive实现组件切换时保存原组件数据方法
Oct 30 Javascript
js实现兼容IE、Firefox的图片缩放代码
Dec 08 #Javascript
JS实现按比例缩放图片的方法(附C#版代码)
Dec 08 #Javascript
JS获取文件大小方法小结
Dec 08 #Javascript
js+ajax实现获取文件大小的方法
Dec 08 #Javascript
JS表格组件神器bootstrap table详解(基础版)
Dec 08 #Javascript
详解js中构造流程图的核心技术JsPlumb(2)
Dec 08 #Javascript
详解js中构造流程图的核心技术JsPlumb
Dec 08 #Javascript
You might like
一个比较不错的PHP日历类分享
2014/11/18 PHP
php中解析带中文字符的url函数分享
2015/01/20 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
php版微信公众平台实现预约提交后发送email的方法
2016/09/26 PHP
php简单构造json多维数组的方法示例
2017/06/08 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
2020/04/04 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
自制基于jQuery的智能提示插件一枚
2011/02/18 Javascript
javascript学习笔记(十三) js闭包介绍(转)
2012/06/20 Javascript
js播放wav文件(源码)
2013/04/22 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
jquery比较简洁的软键盘特效实现方法
2015/03/19 Javascript
下一代Bootstrap的5个特点 超酷炫!
2016/06/17 Javascript
14 个折磨人的 JavaScript 面试题
2016/08/08 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
canvas绘制的直线动画
2017/01/23 Javascript
详解webpack引入第三方库的方式以及注意事项
2019/01/15 Javascript
小白教程|一小时上手最流行的前端框架vue(推荐)
2019/04/10 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
vue从零实现一个消息通知组件的方法详解
2020/03/16 Javascript
jQuery实现雪花飘落效果
2020/08/02 jQuery
[45:44]完美世界DOTA2联赛PWL S2 FTD vs PXG 第一场 11.27
2020/12/01 DOTA
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
Windows下Python的Django框架环境部署及应用编写入门
2016/03/10 Python
python生成密码字典的方法
2018/07/06 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
HTML5 File接口在web页面上使用文件下载
2017/02/27 HTML / CSS
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
大学生求职信范文应怎么写
2014/01/01 职场文书
爱岗敬业演讲稿范文
2014/01/14 职场文书
三方股东合作协议书
2014/10/28 职场文书
工作年限证明模板
2014/11/01 职场文书
初中团委工作总结
2015/08/13 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
动漫APP软件排行榜前十名,半次元上榜,第一款由腾讯公司推出
2022/03/18 杂记