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 学习笔记(十四) 正则表达式
Jan 22 Javascript
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
Feb 26 Javascript
jQuery form 表单验证插件(fieldValue)校验表单
Jan 24 Javascript
简单理解vue中track-by属性
Oct 26 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
Oct 28 Javascript
纯原生js实现贪吃蛇游戏
Apr 16 Javascript
使用requirejs模块化开发多页面一个入口js的使用方式
Jun 14 Javascript
捕获未处理的Promise错误方法
Oct 13 Javascript
Vue2仿淘宝实现省市区三级联动
Apr 15 Javascript
jQuery中将json数据显示到页面表格的方法
May 27 jQuery
微信小程序npm引入vant-weapp的踩坑记录
Aug 01 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
Jul 17 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
Banner程序
2006/10/09 PHP
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
php自动载入类用法实例分析
2016/06/24 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
分享十五个最佳jQuery 幻灯插件和教程
2010/03/27 Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
JavaScript中的slice()方法使用详解
2015/06/06 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
vue中$nextTick的用法讲解
2019/01/17 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python中lambda与def用法对比实例分析
2015/04/30 Python
python网络编程之文件下载实例分析
2015/05/20 Python
玩转python爬虫之正则表达式
2016/02/17 Python
深入理解python中的闭包和装饰器
2016/06/12 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
基于python实现聊天室程序
2018/07/27 Python
python 多线程对post请求服务器测试并发的方法
2019/06/13 Python
使用 Python 读取电子表格中的数据实例详解
2020/04/17 Python
python中有函数重载吗
2020/05/28 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
python爬取微博评论的实例讲解
2021/01/15 Python
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
工程质量月活动方案
2014/02/19 职场文书
购房委托书范本
2014/09/18 职场文书
2014年大学生工作总结
2014/11/20 职场文书
工作保证书
2015/01/17 职场文书
大学团日活动总结书
2015/05/11 职场文书
城镇居民医疗保险工作总结
2015/08/10 职场文书
反邪教学习心得体会
2016/01/15 职场文书
Python 的演示平台支持 WSGI 接口的应用
2022/04/20 Python