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获取地址栏参数
Dec 22 Javascript
textarea的value是html文件源代码,存成html文件的代码
Apr 20 Javascript
InnerHtml和InnerText的区别分析
Mar 13 Javascript
Google排名中的10个最著名的 JavaScript库
Apr 27 Javascript
Event altKey,ctrlKey,shiftKey属性解析
Dec 18 Javascript
jquery实现的V字形显示效果代码
Oct 27 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
Apr 13 Javascript
原生JavaScrpit中异步请求Ajax实现方法
Nov 03 Javascript
vue和webpack项目构建过程常用的npm命令详解
Jun 15 Javascript
微信提示 在浏览器打开 效果实现过程解析
Sep 10 Javascript
Vue-Ant Design Vue-普通及自定义校验实例
Oct 24 Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
Nov 11 Javascript
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
使用Curl进行抓取远程内容时url中文编码问题示例探讨
2013/10/29 PHP
PHP入门教程之数学运算技巧总结
2016/09/11 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
文字溢出实现溢出的部分再放入一个新生成的div中具体代码
2013/05/17 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
Javascript基础教程之JavaScript语法
2015/01/18 Javascript
如何使用Bootstrap的modal组件自定义alert,confirm和modal对话框
2016/03/01 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
2016/08/29 Javascript
JS优化与惰性载入函数实例分析
2017/04/06 Javascript
Angular 4根据组件名称动态创建出组件的方法教程
2017/11/01 Javascript
Vue脚手架的简单使用实例
2018/07/10 Javascript
微信小程序非swiper组件实现的自定义伪3D轮播图效果示例
2018/12/11 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
2019/01/08 jQuery
vue鼠标悬停事件实例详解
2019/04/01 Javascript
Vue实现导航栏点击当前标签变色功能
2020/08/19 Javascript
JS中实现一个下载进度条及播放进度条的代码
2019/06/10 Javascript
Node 模块原理与用法详解
2020/05/13 Javascript
微信小程序开发(二):页面跳转并传参操作示例
2020/06/01 Javascript
Postman环境变量全局变量使用方法详解
2020/08/13 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
Python原始字符串(raw strings)用法实例
2014/10/13 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
Python多线程原理与用法详解
2018/08/20 Python
Python线程threading模块用法详解
2020/02/26 Python
h5移动端调用支付宝、微信支付的实现
2020/06/08 HTML / CSS
应届毕业生个人求职信范文
2014/01/29 职场文书
《第一次抱母亲》教学反思
2014/04/16 职场文书
竞选副班长演讲稿
2014/04/24 职场文书
李敖北大演讲稿
2014/05/24 职场文书
幼儿园端午节活动方案
2014/08/25 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
高一化学教学反思
2016/02/22 职场文书
Python基础之数据结构详解
2021/04/28 Python