JS简单判断是否在微信浏览器打开的方法示例


Posted in Javascript onJanuary 08, 2019

本文实例讲述了JS简单判断是否在微信浏览器打开的方法。分享给大家供大家参考,具体如下:

最近做很多HTML5的项目,很多页面会通过微信微博等SNS分享出去。在分享页面上提供公司APP的下载。但是在很多应用的浏览器中,点击下载链接无法下载应用。那么针对这些浏览器我们需要给用户提示从safari或者系统自带的浏览器打开分享页面。通过js就可以判断当前页面是在什么浏览器打开的。

<script>
    var ua = navigator.userAgent.toLowerCase();
    var isWeixin = ua.indexOf('micromessenger') != -1;
    if (!isWeixin) {
      window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=888"
    }
</script>

只要不是在微信内部打开网页的,就会跳转提示页面,appid必写,可随意写,也可以写已获取的。

还是觉得跳转比较好,防止别人查看自己的代码。

以下是一段示例代码,注释中表明了通过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 工具库 Cloudgamer JavaScript Library v0.1 发布
Oct 29 Javascript
JavaScript传递变量: 值传递?引用传递?
Feb 22 Javascript
基于JQuery的日期联动实现代码
Feb 24 Javascript
javascript标签在页面中的位置探讨
Apr 11 Javascript
java与javascript之间json格式数据互转介绍
Oct 29 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
Nov 22 Javascript
用循环或if语句从json中取数据示例
Aug 18 Javascript
JavaScript实现数字数组正序排列的方法
Apr 06 Javascript
详解JavaScript中shift()方法的使用
Jun 09 Javascript
vue开发拖拽进度条滑动组件
Sep 21 Javascript
webpack 动态批量加载文件的实现方法
Mar 19 Javascript
javascript实现计算器功能详解流程
Nov 01 Javascript
JQuery搜索框自动补全(模糊匹配)功能实现示例
Jan 08 #jQuery
Angular6 发送手机验证码按钮倒计时效果实现方法
Jan 08 #Javascript
Angular6 用户自定义标签开发的实现方法
Jan 08 #Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
Jan 08 #Javascript
关于微信小程序登录的那些事
Jan 08 #Javascript
Vue2.x Todo之自定义指令实现自动聚焦的方法
Jan 08 #Javascript
关于React动态加载路由处理的相关问题
Jan 07 #Javascript
You might like
php获取四位字母和数字的随机数的实现方法
2015/01/09 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
2012/01/15 Javascript
面向对象继承实例(a如何继承b问题)(自写)
2013/07/01 Javascript
Jquery.addClass始终无效原因分析
2013/09/08 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
jquery判断当前浏览器的实现代码
2015/11/07 Javascript
jQuery获取与设置iframe高度的方法
2016/08/01 Javascript
JS正则表达式修饰符global(/g)用法分析
2016/12/27 Javascript
vue如何引用其他组件(css和js)
2017/04/13 Javascript
微信小程序左右滑动的实现代码
2017/12/15 Javascript
vue.js实现标签页切换效果
2018/06/07 Javascript
webstorm中配置Eslint的两种方式及差异比较详解
2018/10/19 Javascript
在JavaScript中使用严格模式(Strict Mode)
2019/06/13 Javascript
Vue 组件的挂载与父子组件的传值实例
2020/09/02 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
Python删除指定目录下过期文件的2个脚本分享
2014/04/10 Python
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
对numpy中数组元素的统一赋值实例
2018/04/04 Python
python使用Turtle库绘制动态钟表
2018/11/19 Python
Python检查ping终端的方法
2019/01/26 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
Python列表删除元素del、pop()和remove()的区别小结
2019/09/11 Python
python3.7调试的实例方法
2020/07/21 Python
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
Erwin Müller穆勒家居瑞士官网:您整个家庭的邮购公司
2019/12/28 全球购物
汽车技术服务与贸易专业求职信
2014/07/20 职场文书
小学生思想品德评语
2014/12/31 职场文书
《桂花雨》教学反思
2016/02/19 职场文书
Java Socket实现Redis客户端的详细说明
2021/05/26 Redis