js如何判断用户是否是用微信浏览器


Posted in Javascript onJune 05, 2014

上周接到个需求,需求是这样的:用户扫一扫二维码会产生一个链接,该链接会向后端发送个请求,返回一个 apk 的下载地址,用户点击下载按钮可以下载此 apk。然后就发生了问题,经过测试,发现用微信扫一扫打开的页面点击下载按钮下载不了 apk,后百度之,原来是微信内置浏览器屏蔽了下载链接,后面和需求方沟通,需求改为如果用户是用微信内置浏览器打开的,则提示用户换一个浏览器打开页面,否则下载不了 apk。那么该如何判断用户是否是用微信浏览器呢?

我们知道 js 可以通过 window.navigator.userAgent 来获取浏览器的相关信息,比如:Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.154 Safari/537.36,那么我们也可以通过该方法来获取微信内置浏览器的相关信息:Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11d201 MicroMessenger/5.3。根据关键字 MicroMessenger 来判断是否是微信内置的浏览器。判断函数如下:

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

demo:
<!DOCTYPE HTML> 
<html lang="en"> 
<head> 
<meta charset="utf-8"/> 
<title>判断是否是微信内置浏览器</title> 
</head> 
<body> 
<h1>如果用微信浏览器打开可以看到下面的文字</h1> 
<p></p> 
</body> 
</html> 
<script type="text/javascript"> 
window.onload = function(){ 
if(isWeiXin()){ 
var p = document.getElementsByTagName('p'); 
p[0].innerHTML = window.navigator.userAgent; 
} 
} 
function isWeiXin(){ 
var ua = window.navigator.userAgent.toLowerCase(); 
if(ua.match(/MicroMessenger/i) == 'micromessenger'){ 
return true; 
}else{ 
return false; 
} 
} 
</script>

说明:可以将上面的 demo 放到服务器上,然后生成个二维码扫一扫。
Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(6)
Dec 23 Javascript
new Date()问题在ie8下面的处理方法
Jul 31 Javascript
JavaScript中的getMilliseconds()方法使用详解
Jun 10 Javascript
jQuery实现checkbox全选的方法
Jun 10 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
Feb 18 Javascript
jQuery基于muipicker实现仿ios时间选择
Feb 22 Javascript
获取IE浏览器Cookie信息的方法
Jan 23 Javascript
微信小程序实现多个按钮toggle功能的实例
Jun 13 Javascript
ReactNative 之FlatList使用及踩坑封装总结
Nov 29 Javascript
jQuery创建及操作xml格式数据示例
May 26 jQuery
Emberjs 通过 axios 下载文件的方法
Sep 03 Javascript
nuxt 服务器渲染动态设置 title和seo关键字的操作
Nov 05 Javascript
如何获取网站icon有哪些可行的方法
Jun 05 #Javascript
IE6中链接A的href为javascript协议时不在当前页面跳转
Jun 05 #Javascript
网页右下角弹出窗体实现代码
Jun 05 #Javascript
获取中文字符串的实际长度代码
Jun 05 #Javascript
jQuery文件上传插件Uploadify使用指南
Jun 05 #Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
Jun 05 #Javascript
首页图片漂浮效果示例代码
Jun 05 #Javascript
You might like
用php来检测proxy
2006/10/09 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
PHP实现的随机红包算法示例
2017/08/14 PHP
JS Excel读取和写入操作(模板操作)实现代码
2010/04/11 Javascript
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
JS弹出层的显示与隐藏示例代码
2013/12/27 Javascript
Vue+Element使用富文本编辑器的示例代码
2017/08/14 Javascript
vue父组件通过props如何向子组件传递方法详解
2017/08/16 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
JavaScript中发出HTTP请求最常用的方法
2018/07/12 Javascript
详解react-refetch的使用小例子
2019/02/15 Javascript
layui禁用侧边导航栏点击事件的解决方法
2019/09/25 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
Vue this.$router.push(参数)实现页面跳转操作
2020/09/09 Javascript
实现vuex原理的示例
2020/10/21 Javascript
[02:28]DOTA2英雄基础教程 狼人
2013/12/23 DOTA
python常见排序算法基础教程
2017/04/13 Python
python集合比较(交集,并集,差集)方法详解
2018/09/13 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
Groupon比利时官方网站:特卖和网上购物高达-70%
2019/08/09 全球购物
购买原创艺术品:Zatista
2019/11/09 全球购物
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
学生的自我鉴定范文
2013/10/24 职场文书
业务员薪酬管理制度
2014/01/15 职场文书
经典团队口号
2014/06/06 职场文书
调研座谈会发言材料
2014/08/23 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
学习焦裕禄先进事迹心得体会
2016/01/23 职场文书
2016年“12.4”法制宣传日活动总结
2016/04/01 职场文书
如何使用Python实现一个简易的ORM模型
2021/05/12 Python
Java死锁的排查
2022/05/11 Java/Android