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中将Object转换为String函数代码 (json str)
Apr 29 Javascript
简介AngularJS的视图功能应用
Jun 17 Javascript
JavaScript构造函数详解
Dec 27 Javascript
微信小程序 省市区选择器实例详解(附源码下载)
Jan 05 Javascript
jQuery事件与动画基础详解
Feb 23 Javascript
flag和jq on 的绑定多个对象和方法(必看)
Feb 27 Javascript
JavaScript数组_动力节点Java学院整理
Jun 26 Javascript
关于页面刷新vuex数据消失问题解决方案
Jul 03 Javascript
详解vue.js+UEditor集成 [前后端分离项目]
Jul 07 Javascript
ES6的异步终极解决方案分享
Jul 11 Javascript
Threejs实现滴滴官网首页地球动画功能
Jul 13 Javascript
elementui实现预览图片组件二次封装
Dec 29 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
php5.2时间相差8小时
2007/01/15 PHP
discuz7 phpMysql操作类
2009/06/21 PHP
php实现点击可刷新验证码
2015/11/07 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
JavaScript Event学习第十章 一些可替换的事件对
2010/02/10 Javascript
js Map List 遍历使用示例
2013/07/10 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
js实现网页多级级联菜单代码
2015/08/20 Javascript
JavaScript动态设置div的样式的方法
2015/12/26 Javascript
浅谈Javascript中的函数、this以及原型
2016/10/09 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
2017/02/15 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
解决JavaScript layui 下拉框不显示的问题
2018/08/14 Javascript
Node.js + express实现上传大文件的方法分析【图片、文本文件】
2019/03/14 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
微信小程序 wx:for 与 wx:for-items 与 wx:key的正确用法
2020/05/19 Javascript
vue中实现弹出层动画效果的示例代码
2020/09/25 Javascript
简单实现python爬虫功能
2015/12/31 Python
Python的string模块中的Template类字符串模板用法
2016/06/27 Python
Python自动化开发学习之三级菜单制作
2017/07/14 Python
win7+Python3.5下scrapy的安装方法
2018/07/31 Python
删除DataFrame中值全为NaN或者包含有NaN的列或行方法
2018/11/06 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
2019/08/14 Python
Python连接mysql方法及常用参数
2020/09/01 Python
JavaScript实现页面动态验证码的实现示例
2021/03/23 Javascript
《母亲的恩情》教学反思
2014/02/13 职场文书
工地安全标语
2014/06/07 职场文书
机关党员三严三实心得体会
2014/10/13 职场文书
少年犯观后感
2015/06/11 职场文书
一篇文章带你复习java知识点
2021/06/28 Java/Android