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 相关文章推荐
JQuery动态创建DOM、表单元素的实现代码
Aug 09 Javascript
jquery统计输入文字的个数并对其进行判断
Jan 07 Javascript
JS文本获得焦点清除文本文字的示例代码
Jan 13 Javascript
jQuery中Ajax的get、post等方法详解
Jan 20 Javascript
js计算德州扑克牌面值的方法
Mar 04 Javascript
javascript实现删除前弹出确认框
Jun 04 Javascript
深入探究JavaScript中for循环的效率问题及相关优化
Mar 13 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
Dec 01 Javascript
Ajax验证用户名或昵称是否已被注册
Apr 05 Javascript
在vue中高德地图引入和轨迹的绘制的实现
Oct 11 Javascript
Vue程序化的事件监听器(实例方案详解)
Jan 07 Javascript
Vue ECharts实现机舱座位选择展示功能
May 15 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
yii2中的rules 自定义验证规则详解
2016/04/19 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
2016/09/13 PHP
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
js向上无缝滚动,网站公告效果 具体代码
2013/11/18 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
jQuery实现简单下拉导航效果
2015/09/07 Javascript
跟我学习javascript的浮点数精度
2015/11/16 Javascript
全面解析Bootstrap排版使用方法(标题)
2015/11/30 Javascript
借助FileReader实现将文件编码为Base64后通过AJAX上传
2015/12/24 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
2016/06/22 Javascript
vue使用xe-utils函数库的具体方法
2018/03/06 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
微信小程序 数据缓存实现方法详解
2019/08/26 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
python使用PyFetion来发送短信的例子
2014/04/22 Python
python实现堆栈与队列的方法
2015/01/15 Python
在Django的上下文中设置变量的方法
2015/07/20 Python
python魔法方法-属性转换和类的表示详解
2016/07/22 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
python 调用c语言函数的方法
2017/09/29 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
python常用数据重复项处理方法
2019/11/22 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
keras使用Sequence类调用大规模数据集进行训练的实现
2020/06/22 Python
HTML5的语法变化介绍
2013/08/13 HTML / CSS
Ratchet 模态框的实现
2020/08/19 HTML / CSS
纽约现代艺术博物馆商店:MoMA STORE(室内家具和杂货商品)
2016/08/02 全球购物
Otel.com:折扣酒店预订
2017/08/24 全球购物
精伦电子Java笔试题
2013/01/16 面试题
婚前保证书
2014/04/29 职场文书
大学生职业生涯十年规划书范文
2014/09/17 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
集英社今正式宣布 成立游戏公司“集英社Games”
2022/03/31 其他游戏
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸