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 相关文章推荐
用roll.js实现的图片自动滚动+鼠标触动的特效
Mar 18 Javascript
JavaScript QueryString解析类代码
Jan 17 Javascript
js打开新窗口方法整理
Feb 17 Javascript
JavaScript如何禁止Backspace键
Dec 02 Javascript
DWR中各种java方法的调用
May 04 Javascript
Bootstrap3学习笔记(三)之表格
May 20 Javascript
vue从使用到源码实现教程详解
Sep 19 Javascript
详解JS几种变量交换方式以及性能分析对比
Nov 25 Javascript
手把手教你搭建ES6的开发运行环境
Jul 11 Javascript
对angular4子路由&辅助路由详解
Oct 09 Javascript
Vue开发中遇到的跨域问题及解决方法
Feb 11 Javascript
基于canvasJS在PHP中制作动态图表
May 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
wordpress之wp-settings.php
2007/08/17 PHP
PHP 自定义错误处理函数trigger_error()
2013/03/26 PHP
PHP Cookie的使用教程详解
2013/06/03 PHP
新手菜鸟必读:session与cookie的区别
2013/08/22 PHP
PHP中4种常用的抓取网络数据方法
2015/06/04 PHP
PHP简单判断手机设备的方法
2016/08/23 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
jquery插件开发注意事项小结
2013/06/04 Javascript
SeaJS 与 RequireJS 的差异对比
2014/12/08 Javascript
javaScript中的原型解析【推荐】
2016/05/05 Javascript
完美JQuery图片切换效果的简单实现
2016/07/21 Javascript
JavaScript中ES6字符串扩展方法
2016/08/26 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
2017/02/17 Javascript
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
深入理解Vue 单向数据流的原理
2017/11/09 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
Python金融数据可视化汇总
2017/11/17 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
对python3中的RE(正则表达式)-详细总结
2019/07/23 Python
使用Python 自动生成 Word 文档的教程
2020/02/13 Python
使用python实现多维数据降维操作
2020/02/24 Python
python里的单引号和双引号的有什么作用
2020/06/17 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
什么是lambda函数
2013/09/17 面试题
80后职场人的职业生涯规划
2014/03/08 职场文书
会计专业求职信范文
2014/03/16 职场文书
商务经理岗位职责
2014/07/30 职场文书
2016教师政治学习心得体会
2016/01/23 职场文书
vue elementUI批量上传文件
2022/04/26 Vue.js
SQL中的连接查询详解
2022/06/21 SQL Server