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 相关文章推荐
使用dynatrace-ajax跟踪JavaScript的性能
Apr 12 Javascript
js实现的倒计时按钮实例
Jun 24 Javascript
AngularJS 最常用的功能汇总
Feb 17 Javascript
js仿京东轮播效果 选项卡套选项卡使用
Jan 12 Javascript
JS实现点击Radio动态更新table数据
Jul 18 Javascript
EasyUI创建人员树的实例代码
Sep 15 Javascript
ztree实现左边动态生成树右边为内容详情功能
Nov 03 Javascript
实例解析ES6 Proxy使用场景介绍
Jan 08 Javascript
微信小程序实现留言板(Storage)
Nov 02 Javascript
浅谈关于JS下大批量异步任务按顺序执行解决方案一点思考
Jan 08 Javascript
vue 自动化路由实现代码
Sep 03 Javascript
vue实现图书管理系统
Dec 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设计模式 Strategy(策略模式)
2011/06/26 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
2011/11/02 PHP
浅析Dos下运行php.exe,出现没有找到php_mbstring.dll 错误的解决方法
2013/06/29 PHP
可以显示单图片,多图片ajax请求的ThickBox3.1类下载
2007/12/23 Javascript
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
js遍历、动态的添加数据的小例子
2013/06/22 Javascript
浅谈bootstrap使用中的一些问题以及解决过程
2016/10/18 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
javascript使用btoa和atob来进行Base64转码和解码
2017/03/20 Javascript
vue-prop父组件向子组件进行传值的方法
2018/03/01 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
node微信开发之获取access_token+自定义菜单
2019/03/17 Javascript
TypeScript开发Node.js程序的方法
2019/04/30 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
jQuery实现简易QQ聊天框
2020/02/10 jQuery
纯JS实现五子棋游戏
2020/05/28 Javascript
[02:10]DOTA2亚洲邀请赛 EG战队出场宣传片
2015/02/07 DOTA
Python中函数的参数传递与可变长参数介绍
2015/06/30 Python
全面理解Python中self的用法
2016/06/04 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
2017/11/21 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
python爬虫使用cookie登录详解
2017/12/27 Python
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
Python使用pandas处理CSV文件的实例讲解
2018/06/22 Python
Python3 max()函数基础用法
2019/02/19 Python
Python 线程池用法简单示例
2019/10/02 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
python中如何打包用户自定义模块
2020/09/23 Python
python 爬虫之selenium可视化爬虫的实现
2020/12/04 Python
HTML5打开本地app应用的方法
2016/03/31 HTML / CSS
机电一体化毕业生求职信
2013/11/02 职场文书
师范院校学生自荐信范文
2013/12/27 职场文书
政风行风整改方案
2014/10/25 职场文书
创业计划书之韩国烧烤店
2019/09/19 职场文书
Win11查看设备管理器
2022/04/19 数码科技