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 相关文章推荐
最新优化收藏到网摘代码(digg,diigo)
Feb 07 Javascript
实现只能输入数字的input不用replace方法
Sep 12 Javascript
jquery 检测元素是否存在的实例代码
Nov 19 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
Dec 16 Javascript
可恶的ie8提示缺少id未定义
Mar 20 Javascript
js库Modernizr的介绍和使用
May 07 Javascript
基于ionic实现下拉刷新功能
May 10 Javascript
简单的三步vuex入门
May 20 Javascript
跨域解决之JSONP和CORS的详细介绍
Nov 21 Javascript
在 Vue 应用中使用 Netlify 表单功能的方法详解
Jun 03 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
Apr 30 jQuery
一小时迅速入门Mybatis之bind与多数据源支持 Java API
Sep 15 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
《忧国的莫里亚蒂》先导宣传图与STAFF公开
2020/03/04 日漫
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
2014/10/30 PHP
php网页病毒清除类
2014/12/08 PHP
php抽象方法和普通方法的区别点总结
2019/10/13 PHP
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
使用PHP+JQuery+Ajax分页的实现
2013/04/23 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
2013/08/23 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
js+css3制作时钟特效
2016/10/16 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
javascript高仿热血传奇游戏实现代码
2018/02/22 Javascript
vue2.0 如何在hash模式下实现微信分享
2019/01/22 Javascript
vue h5移动端禁止缩放代码
2019/10/28 Javascript
Vuex的API文档说明详解
2020/02/05 Javascript
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
[46:50]Liquid vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python使用SMTP发送qq或sina邮件
2017/10/21 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
2018/04/26 Python
Python八大常见排序算法定义、实现及时间消耗效率分析
2018/04/27 Python
python使用selenium实现批量文件下载
2019/03/11 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
python3.7环境下安装Anaconda的教程图解
2019/09/10 Python
Python时间差中seconds和total_seconds的区别详解
2019/12/26 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
Django DRF APIView源码运行流程详解
2020/08/17 Python
Python常用外部指令执行代码实例
2020/11/05 Python
6号汽车旅馆预订:Motel 6
2018/02/11 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
师范生实习自我鉴定
2013/11/01 职场文书
求职信的要素有哪些呢
2013/12/26 职场文书
个人实习生的自我评价
2014/02/16 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
2015年手术室工作总结
2015/05/11 职场文书
红与黑读书笔记
2015/06/29 职场文书
Redis集群节点通信过程/原理流程分析
2022/03/18 Redis
Android Rxjava3 使用场景详解
2022/04/07 Java/Android