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 相关文章推荐
奇妙的js
Sep 24 Javascript
javascript setTimeout和setInterval 的区别
Dec 08 Javascript
基于jquery的商品展示放大镜
Aug 07 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
Oct 29 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
Dec 05 Javascript
javascript实现禁止鼠标滚轮事件
Jul 24 Javascript
JavaScript DOM 学习总结(五)
Nov 24 Javascript
Vue2实现组件props双向绑定
Dec 02 Javascript
提高Web性能的前端优化技巧总结
Feb 27 Javascript
Three.js的使用及绘制基础3D图形详解
Apr 27 Javascript
解析vue data不可以使用箭头函数问题
Jul 03 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
Jan 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
15种PHP Encoder的比较
2007/04/17 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
2019/06/06 PHP
thinkPHP5使用Rabc实现权限管理
2019/08/28 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
javascript淡入淡出效果的实现思路
2012/03/31 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
学习使用grunt来打包JavaScript和CSS程序的教程
2016/01/04 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
jquery datatable服务端分页
2016/08/31 Javascript
node.js学习之交互式解释器REPL详解
2016/12/08 Javascript
实例浅析js的this
2016/12/11 Javascript
jQuery实现的事件绑定功能基本示例
2017/10/11 jQuery
vue中使用cropperjs的方法
2018/03/01 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
小程序实现列表展开收起效果
2020/07/29 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
[02:49]2014DOTA2电竞也是体育项目! 势要把荣誉带回中国!
2014/07/20 DOTA
Python正则简单实例分析
2017/03/21 Python
Python 200行代码实现一个滑动验证码过程详解
2019/07/11 Python
python找出因数与质因数的方法
2019/07/25 Python
PHP统计代码行数的小代码
2019/09/19 Python
Win系统PyQt5安装和使用教程
2019/12/25 Python
python基于celery实现异步任务周期任务定时任务
2019/12/30 Python
利用python中集合的唯一性实现去重
2020/02/11 Python
浅谈python中频繁的print到底能浪费多长时间
2020/02/21 Python
如何通过命令行进入python
2020/07/06 Python
财务会计专业应届毕业生求职信
2013/10/18 职场文书
小学生安全保证书
2014/02/01 职场文书
个人承诺书
2014/03/26 职场文书
防震减灾主题班会
2015/08/14 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
教师反邪教心得体会
2016/01/15 职场文书
2016优秀班主任个人先进事迹材料
2016/02/26 职场文书