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 相关文章推荐
学习YUI.Ext第七日-View&amp;JSONView Part Two-一个画室网站的案例
Mar 10 Javascript
在JavaScript中通过URL传递汉字的方法
Apr 09 Javascript
jquery 常用操作方法
Jan 28 Javascript
表格单元格交错着色实现思路及代码
Apr 01 Javascript
JS操作图片(增,删,改) 例子
Apr 17 Javascript
js获取checkbox复选框选中的选项实例
Aug 24 Javascript
jQuery分组选择器用法实例
Dec 23 Javascript
JavaSacript中charCodeAt()方法的使用详解
Jun 05 Javascript
详解如何使用webpack在vue项目中写jsx语法
Nov 08 Javascript
Vue 中如何正确引入第三方模块的方法步骤
May 05 Javascript
vue项目中锚点定位替代方式
Nov 13 Javascript
五句话帮你轻松搞定js原型链
Dec 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
Symfony2中被遗弃的getRequest()方法分析
2016/03/17 PHP
PHP二分查找算法示例【递归与非递归方法】
2016/09/29 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
Jquery+JSon 无刷新分页实现代码
2010/04/01 Javascript
jQuery中after的两种用法实例
2013/07/03 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
js中style.display=&quot;&quot;无效的解决方法
2014/10/30 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
详解Vue+axios+Node+express实现文件上传(用户头像上传)
2018/08/10 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
vue cli 3.x 项目部署到 github pages的方法
2019/04/17 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
javascript 函数的暂停和恢复实例详解
2020/04/25 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
python读写ini文件示例(python读写文件)
2014/03/25 Python
python实现在目录中查找指定文件的方法
2014/11/11 Python
Python操作CouchDB数据库简单示例
2015/03/10 Python
Python的Asyncore异步Socket模块及实现端口转发的例子
2016/06/14 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
Python 中pandas.read_excel详细介绍
2017/06/23 Python
PyQt5每天必学之拖放事件
2020/08/27 Python
基于python读取.mat文件并取出信息
2019/12/16 Python
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
Dogeared官网:在美国手工制作的珠宝
2019/08/24 全球购物
经济信息管理专业大学生求职信
2013/09/27 职场文书
销售冠军获奖感言
2014/02/03 职场文书
总经理工作职责范文
2014/03/14 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
庆元旦演讲稿
2014/09/15 职场文书
创业计划书介绍
2019/04/24 职场文书
创业计划书之水果店
2019/07/18 职场文书
详细聊聊vue中组件的props属性
2021/11/02 Vue.js