js判断当前页面用什么浏览器打开的方法


Posted in Javascript onJanuary 06, 2016

最近做很多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()
}

另一种方法:

用JS来判断了,经过查找资料终于实现了效果,直接上代码

function is_weixn(){ 
  var ua = navigator.userAgent.toLowerCase(); 
  if(ua.match(/MicroMessenger/i)=="micromessenger") { 
    return true; 
  } else { 
    return false; 
  } 
}

通过测试完全通过,无论是android 还是iphone,ipad 都可以,当然我们除了用js来判断之外,用其它语言来判断就更简单了,比如PHP

function is_weixin(){ 
  if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false ) { 
      return true; 
  }  
  return false; 
}

以上就是为大家分享了js判断当前页面用什么浏览器打开的方法,希望对大家的学习有所帮助。

Javascript 相关文章推荐
javascript中的undefined 与 null 的区别  补充篇
Mar 17 Javascript
js购物车实现思路及代码(个人感觉不错)
Dec 23 Javascript
javascript读写json示例
Apr 11 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
Apr 17 Javascript
JS根据年月获得当月天数的实现代码
Jul 03 Javascript
js轮播图代码分享
Jul 14 Javascript
Bootstrap基本布局实现方法详解
Nov 25 Javascript
JavaScript 用fetch 实现异步下载文件功能
Jul 21 Javascript
JavaScript 中的 this 简单规则
Sep 19 Javascript
打造通用的匀速运动框架(实例讲解)
Oct 17 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
Nov 12 Javascript
vue递归实现树形组件
Jul 15 Vue.js
javascript中闭包(Closure)详解
Jan 06 #Javascript
果断收藏9个Javascript代码高亮脚本
Jan 06 #Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
Jan 05 #Javascript
JavaScript实现简单的tab选项卡切换
Jan 05 #Javascript
javascript实现简单的全选和反选功能
Jan 05 #Javascript
Javascript原型链的原理详解
Jan 05 #Javascript
深入浅析JavaScript系列(13):This? Yes,this!
Jan 05 #Javascript
You might like
推荐一篇入门级的Class文章
2007/03/19 PHP
PHP header()函数常用方法总结
2014/04/11 PHP
深入浅出php socket编程
2015/05/13 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
基于JQuery实现分隔条的功能
2016/06/17 Javascript
关于List.ToArray()方法的效率测试
2016/09/30 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
jQuery Layer弹出层传值到父页面的实现代码
2017/08/17 jQuery
jquery animate动画持续运动的实例
2017/11/29 jQuery
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
js实现倒计时器自定义时间和暂停
2019/02/25 Javascript
微信小程序开发实现的选项卡(窗口顶部/底部TabBar)页面切换功能图文详解
2019/05/14 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
JS中间件设计模式的深入探讨与实例分析
2020/04/11 Javascript
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
python逐行读取文件内容的三种方法
2014/01/20 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
Python Flask基础教程示例代码
2018/02/07 Python
PyQt5实现下载进度条效果
2018/04/19 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
对Django中的权限和分组管理实例讲解
2019/08/16 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
pytorch进行上采样的种类实例
2020/02/18 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
幼儿教师培训感言
2014/03/08 职场文书
校园活动策划方案
2014/06/13 职场文书
毕业生评语大全
2015/01/04 职场文书
农民工工资支付承诺书
2015/05/04 职场文书
幼儿园开学家长寄语(2016春季)
2015/12/03 职场文书
Nginx 反向代理解决跨域问题多种情况分析
2022/01/18 Servers