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文本框不能输入空格验证方法
Mar 19 Javascript
document.documentElement的一些使用技巧
Apr 18 Javascript
jquery获取css中的选择器(实例讲解)
Dec 02 Javascript
jquery选择checked在ie8普通模式下的问题
Feb 12 Javascript
Area 区域实现post提交数据的js写法
Apr 22 Javascript
js漂浮广告实现代码
Aug 15 Javascript
js仿淘宝评价评分功能
Feb 28 Javascript
JavaScript数据结构之栈实例用法
Jan 18 Javascript
VuePress 静态网站生成方法步骤
Feb 14 Javascript
在layui中对table中的数据进行判断(0、1)转换为提示信息的方法
Sep 28 Javascript
详解JavaScript中new操作符的解析和实现
Sep 04 Javascript
jQuery实现电梯导航模块
Dec 22 jQuery
如何获取网站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 + Laravel如何实现部署自动化详解
2017/10/11 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
javascript图片相似度算法实现 js实现直方图和向量算法
2014/01/14 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
javascript实现表单提交后,提交按钮不可用的方法
2015/04/18 Javascript
jQuery()方法的第二个参数详解
2015/04/29 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
Angular动态添加、删除输入框并计算值实例代码
2017/03/29 Javascript
jQuery为某个div加入行样式
2017/06/09 jQuery
js实现旋转木马轮播图效果
2020/01/10 Javascript
在Vue里如何把网页的数据导出到Excel的方法
2020/09/30 Javascript
微信小程序tab左右滑动切换功能的实现代码
2021/02/08 Javascript
python 获取et和excel的版本号
2009/04/09 Python
python re正则表达式模块(Regular Expression)
2014/07/16 Python
python列表的常用操作方法小结
2016/05/21 Python
详解python并发获取snmp信息及性能测试
2017/03/27 Python
使用Python对微信好友进行数据分析
2018/06/27 Python
python format 格式化输出方法
2018/07/16 Python
Python BS4库的安装与使用详解
2018/08/08 Python
python爬虫之urllib库常用方法用法总结大全
2018/11/14 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
HTML5如何使用SVG的方法示例
2019/01/11 HTML / CSS
Linux中如何用命令创建目录
2016/12/02 面试题
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
计算机个人求职信范例
2014/01/24 职场文书
经济管理自荐书
2014/06/09 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
上市公司董事长岗位职责
2015/04/16 职场文书
校园新闻稿范文
2015/07/18 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
快消品行业营销模式与盈利模式分享
2019/09/27 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS
如何理解PHP核心特性命名空间
2021/05/28 PHP