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_11_constructor实现原理
Oct 18 Javascript
iframe 父窗口和子窗口相互的调用方法集锦
Dec 15 Javascript
提高javascript效率 一次判断,而不要次次判断
Mar 30 Javascript
javascript 实现字符串反转的三种方法
Nov 23 Javascript
关闭页面window.location事件未执行的原因及解决方法
Sep 01 Javascript
JS实现HTML标签转义及反转义
Apr 14 Javascript
JavaScript获取ul中li个数的方法
Feb 13 Javascript
javascript深拷贝和浅拷贝详解
Feb 14 Javascript
Node.js事件的正确使用方法
Apr 05 Javascript
解决layui的radio属性或别的属性没显示出来的问题
Sep 26 Javascript
如何实现js拖拽效果及原理解析
May 08 Javascript
vue实例的选项总结
Jun 09 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 XML操作的各种方法解析(比较详细)
2010/06/17 PHP
使用PHP备份MYSQL数据的多种方法
2014/01/15 PHP
PHP实现的汉字拼音转换和公历农历转换类及使用示例
2014/07/01 PHP
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
PHP开发中AJAX技术的简单应用
2015/12/11 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
2015/08/24 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
JavaScript实现星级评分
2017/01/12 Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
2017/05/09 Javascript
原生js FileReader对象实现图片上传本地预览效果
2020/03/27 Javascript
js事件委托和事件代理案例分享
2017/07/25 Javascript
nodejs async异步常用函数总结(推荐)
2017/11/17 NodeJs
jQuery动态添加li标签并添加属性和绑定事件方法
2018/02/24 jQuery
使用express来代理服务的方法
2019/06/21 Javascript
[00:35]可解锁地面特效
2018/12/20 DOTA
在Python中操作时间之tzset()方法的使用教程
2015/05/22 Python
Python标准库之Sys模块使用详解
2015/05/23 Python
python分布式环境下的限流器的示例
2017/10/26 Python
使用Python横向合并excel文件的实例
2018/12/11 Python
python Tensor和Array对比分析
2020/01/08 Python
python 实现表情识别
2020/11/21 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
HTML5 Canvas概述
2009/08/26 HTML / CSS
美国知名玩具品牌:Melissa & Doug
2016/08/16 全球购物
阿姆斯特丹杜莎夫人蜡像馆官方网站:Madame Tussauds Amsterdam
2019/03/12 全球购物
建筑专业自荐信范文
2014/01/05 职场文书
二年级班级文化建设方案
2014/05/10 职场文书
党员干部一句话承诺
2014/05/30 职场文书
最新离婚协议书范本
2014/08/19 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
美国旅游签证工作证明
2014/10/14 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
全国爱牙日活动总结
2015/02/05 职场文书