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读取XML文件数据并显示的实现代码
Dec 16 Javascript
Bookmarklet实现启动jQuery(模仿 云输入法)
Sep 15 Javascript
JS按位非(~)运算符与~~运算符的理解分析
Jul 31 Javascript
疯狂Jquery第一天(Jquery学习笔记)
May 11 Javascript
如何获取JQUERY AJAX返回的JSON结果集实现代码
Dec 10 Javascript
javascript实现类似java中getClass()得到对象类名的方法
Jul 27 Javascript
jQuery ajax MD5实现用户注册即时验证功能
Oct 11 Javascript
npm国内镜像 安装失败的几种解决方案
Jun 04 Javascript
js使用highlight.js高亮你的代码
Aug 18 Javascript
一文看懂如何简单实现节流函数和防抖函数
Sep 05 Javascript
微信小程序绑定手机号获取验证码功能
Oct 22 Javascript
JS开发前端团队展示控制器来为成员引流
Aug 14 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在线生成二维码代码(google api)
2013/06/03 PHP
生成随机字符串和验证码的类的PHP实例
2013/12/24 PHP
windows7下安装php的imagick和imagemagick扩展教程
2014/07/04 PHP
PHP测试成功的邮件发送案例
2015/10/26 PHP
详解PHP中的序列化、反序列化操作
2017/03/21 PHP
PHP实现的简单组词算法示例
2018/04/10 PHP
PHP实现提取多维数组指定一列的方法总结
2019/12/04 PHP
JS 实现完美include载入实现代码
2010/08/05 Javascript
js focus不起作用的解决方法(主要是因为dom元素是否加载完成)
2010/11/05 Javascript
js open() 与showModalDialog()方法使用介绍
2013/09/10 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
moment.js轻松实现获取当前日期是当年的第几周
2015/02/05 Javascript
Javascript BOM学习小结(六)
2015/11/26 Javascript
jquery限定文本框只能输入数字(整数和小数)
2016/01/08 Javascript
谈一谈javascript闭包
2016/01/28 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
BootStrap 图标icon符号图标glyphicons不正常显示的快速解决办法
2016/12/08 Javascript
微信小程序 PHP生成带参数二维码
2017/02/21 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
用python登录Dr.com思路以及代码分享
2014/06/25 Python
用Python实现随机森林算法的示例
2017/08/24 Python
Centos 升级到python3后pip 无法使用的解决方法
2018/06/12 Python
pyQt5实时刷新界面的示例
2019/06/25 Python
详解django使用include无法跳转的解决方法
2020/03/19 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
HTML5 常见面试题之PC端和移动端区别介绍
2018/01/22 HTML / CSS
canvas小画板之平滑曲线的实现
2020/08/12 HTML / CSS
Hunter Boots美国官方网站:赫特威灵顿雨靴
2018/06/16 全球购物
防沙治沙典型材料
2014/05/07 职场文书
九华山导游词
2015/02/03 职场文书
2015年助残日活动总结
2015/03/27 职场文书
CSS实现漂亮的时钟动画效果的实例代码
2021/03/30 HTML / CSS