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 相关文章推荐
25个优雅的jQuery Tooltip插件推荐
May 25 Javascript
js 取时间差去掉周六周日实现代码
Dec 25 Javascript
jQuery获取checkbox选中的值
Jan 28 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
May 28 Javascript
jquery.validate使用详解
Jun 02 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
Jun 24 Javascript
Angular2 环境配置详细介绍
Sep 21 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
Feb 16 Javascript
封装运动框架实战左右与上下滑动的焦点轮播图(实例)
Oct 17 Javascript
Angular2的管道Pipe的使用方法
Nov 07 Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
Aug 23 jQuery
jquery将信息遍历到界面上实例代码
Jan 21 jQuery
如何获取网站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 连接mysql连接被重置的解决方法
2011/02/15 PHP
ThinkPHP分页实例
2014/10/15 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
PHP通过get方法获得form表单数据方法总结
2018/09/12 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
JQuery的html(data)方法与&amp;lt;script&amp;gt;脚本块的解决方法
2010/03/09 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
2015/01/31 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
JQuery fileupload插件实现文件上传功能
2016/03/18 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
如何用JavaScript实现动态修改CSS样式表
2016/05/20 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
2016/12/14 Javascript
Vue.extend构造器的详解
2017/07/17 Javascript
浅谈webpack打包过程中因为图片的路径导致的问题
2018/02/21 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
pandas获取groupby分组里最大值所在的行方法
2018/04/20 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
关于keras中keras.layers.merge的用法说明
2020/05/23 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
HTML5的结构和语义(5):交互
2008/10/17 HTML / CSS
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
C++是不是类型安全的
2014/02/18 面试题
库房主管岗位职责
2013/12/31 职场文书
学校党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
小班教师个人总结
2015/02/05 职场文书
2015年收银员个人工作总结
2015/04/01 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书
员工试用期工作总结
2019/06/20 职场文书
教学工作总结范文5篇
2019/08/19 职场文书
django 认证类配置实现
2021/11/11 Python
Spring Data JPA框架Repository自定义实现
2022/04/28 Java/Android