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 相关文章推荐
User Scripts: Video Download by User Scripts
May 14 Javascript
让复选框只能选择一项的方法
Oct 08 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
Dec 20 Javascript
Javascript之Math对象详解
Jun 07 Javascript
Javascript字符串常用方法详解
Jul 21 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
Feb 20 Javascript
浅谈JavaScript中的属性:如何遍历属性
Sep 14 Javascript
mpvue中使用flyjs全局拦截的实现代码
Sep 13 Javascript
React实现全局组件的Toast轻提示效果
Sep 21 Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
Aug 14 Javascript
JavaScript 事件代理需要注意的地方
Sep 08 Javascript
JavaScript原型链详解
Nov 07 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
AM/FM收音机的安装与调试
2021/03/02 无线电
学习php开源项目的源码指南
2014/12/21 PHP
php简单实现发送带附件的邮件
2015/06/10 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
事件绑定之小测试  onclick && addEventListener
2011/07/31 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
Bootstrap CSS布局之代码
2016/12/17 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
解决vue点击控制单个样式的问题
2018/09/05 Javascript
微信小程序iBeacon测距及稳定程序的实现解析
2019/07/31 Javascript
关于在LayUI中使用AJAX提交巨坑记录
2019/10/25 Javascript
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
Python 支付整合开发包的实现
2019/01/23 Python
Django项目使用CircleCI的方法示例
2019/07/14 Python
opencv3/C++ 平面对象识别&透视变换方式
2019/12/11 Python
浅谈python 类方法/静态方法
2020/09/18 Python
python中turtle库的简单使用教程
2020/11/11 Python
CSS3中的transform属性进行2D和3D变换的基本用法
2016/05/12 HTML / CSS
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
HTML5自定义属性前缀data-及dataset的使用方法(html5 新特性)
2017/08/24 HTML / CSS
日本土著品牌,综合型购物网站:Cecile
2016/08/23 全球购物
Clearly新西兰:购买眼镜、太阳镜和隐形眼镜
2018/04/26 全球购物
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
本科毕业生的求职信范文
2013/11/20 职场文书
业务员简历自我评价
2014/03/06 职场文书
大型演出策划方案
2014/05/28 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
请客吃饭开场白
2015/06/01 职场文书
java项目构建Gradle的使用教程
2022/03/24 Java/Android
使用 CSS 构建强大且酷炫的粒子动画效果
2022/08/14 HTML / CSS
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS