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 相关文章推荐
URL编码转换,escape() encodeURI() encodeURIComponent()
Dec 27 Javascript
javascript Discuz代码中的msn聊天小功能
May 25 Javascript
JSQL SQLProxy 的 php 版本代码
May 05 Javascript
麻雀虽小五脏俱全 Dojo自定义控件应用
Sep 04 Javascript
使用jQuery的将桌面应用程序引入浏览器
Nov 19 Javascript
node.js中的fs.fchown方法使用说明
Dec 16 Javascript
JavaScript 学习笔记之操作符
Jan 14 Javascript
Bootstrap图片轮播组件Carousel使用方法详解
Oct 20 Javascript
JavaScript页面实时显示当前时间实例代码
Oct 23 Javascript
AngularJS实现动态添加Option的方法
May 17 Javascript
详解React 16 中的异常处理
Jul 28 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
Sep 27 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操作文件方法问答
2007/03/16 PHP
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
PHP通用检测函数集合
2011/02/08 PHP
PHP中Fatal error session_start()错误解决步骤
2014/08/05 PHP
python进程与线程小结实例分析
2018/11/11 PHP
关于laravel 子查询 &amp; join的使用
2019/10/16 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
Javascript访问器属性实例分析
2014/12/30 Javascript
Javascript中innerHTML用法实例分析
2015/01/12 Javascript
深入理解JavaScript系列(47):对象创建模式(上篇)
2015/03/04 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
jQuery Validation Plugin验证插件手动验证
2016/01/26 Javascript
深入理解js promise chain
2016/05/05 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
2016/09/27 Javascript
详解nodejs异步I/O和事件循环
2017/06/07 NodeJs
详解ElementUI之表单验证、数据绑定、路由跳转
2017/06/21 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
Python numpy实现二维数组和一维数组拼接的方法
2018/06/05 Python
numpy 计算两个数组重复程度的方法
2018/11/07 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
Python面向对象封装操作案例详解
2019/12/31 Python
Python netmiko模块的使用
2020/02/14 Python
Python爬虫爬取新闻资讯案例详解
2020/07/14 Python
Pyecharts 中Geo函数常用参数的用法说明
2021/02/01 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
C和C++经典笔试题附答案解析
2014/08/18 面试题
六查六看剖析材料
2014/10/06 职场文书
个人收入证明格式
2015/06/24 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
Go语言-为什么返回值为接口类型,却返回结构体
2021/04/24 Golang
Python开发之QT解决无边框界面拖动卡屏问题(附带源码)
2021/05/27 Python
服务器nginx权限被拒绝解决案例
2022/09/23 Servers