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 相关文章推荐
js不完美解决click和dblclick事件冲突问题
Jul 16 Javascript
javascript实现五星评价代码(源码下载)
Aug 11 Javascript
HTML5游戏引擎LTweenLite实现的超帅动画效果(附demo源码下载)
Jan 26 Javascript
解析如何利用iframe标签以及js制作时钟
Dec 08 Javascript
jQuery实现的浮动层div浏览器居中显示效果
Feb 03 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
Feb 27 Javascript
使用D3.js构建实时图形的示例代码
Aug 28 Javascript
详解基于webpack&amp;gettext的前端多语言方案
Jan 29 Javascript
vue.js 实现a标签href里添加参数
Nov 12 Javascript
Vue中常用rules校验规则(实例代码)
Nov 14 Javascript
Nest.js环境变量配置与序列化详解
Feb 21 Javascript
Vue3 Composition API的使用简介
Mar 29 Vue.js
如何获取网站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安装攻略:常见问题解答(一)
2006/10/09 PHP
php 变量未定义等错误的解决方法
2011/01/12 PHP
PHP的autoload机制的实现解析
2012/09/15 PHP
php使用curl代理实现抓取数据的方法
2017/02/03 PHP
yii2的restful api路由实例详解
2019/05/14 PHP
javascript textarea光标定位方法(兼容IE和FF)
2011/03/12 Javascript
javascript设置连续两次点击按钮时间间隔的方法
2014/10/28 Javascript
js闭包实例汇总
2014/11/09 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
vuejs使用FormData实现ajax上传图片文件
2017/08/08 Javascript
bootstrap时间控件daterangepicker使用方法及各种小bug修复
2017/10/25 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
react.js组件实现拖拽复制和可排序的示例代码
2018/08/20 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
2019/09/06 Javascript
ESLint 是如何检查 .vue 文件的
2020/11/30 Vue.js
python解析html开发库pyquery使用方法
2014/02/07 Python
PyMongo安装使用笔记
2015/04/27 Python
总结Python编程中函数的使用要点
2016/03/20 Python
Python入门教程之运算符与控制流
2016/08/17 Python
Python快速从注释生成文档的方法
2016/12/26 Python
用python找出那些被“标记”的照片
2017/04/20 Python
使用matplotlib绘制图例标签中带有公式的图
2019/12/13 Python
python字符串替换re.sub()实例解析
2020/02/09 Python
一文详述 Python 中的 property 语法
2020/09/01 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
洛杉矶健身中心女性专用运动服饰品牌:Marika
2018/05/09 全球购物
华美博弈C/VC工程师笔试试题
2012/07/16 面试题
护理专业毕业生自我鉴定
2013/10/08 职场文书
大学生物业管理求职信
2013/10/24 职场文书
优秀信贷员先进事迹
2014/01/31 职场文书
授权委托书格式模板
2014/04/03 职场文书
单位委托书范本
2014/04/04 职场文书
公安局副政委班子个人对照检查材料
2014/10/04 职场文书
2014年电话客服工作总结
2014/12/09 职场文书
《百分数的认识》教学反思
2016/02/19 职场文书
关于Redis的主从复制及哨兵问题
2022/06/16 Redis