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中的$(document).ready()与window.onload的区别
Nov 18 Javascript
网页中的图片的处理方法与代码
Nov 26 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
Dec 10 Javascript
jQuery中的jQuery()方法用法分析
Dec 27 Javascript
js实现超酷的照片墙展示效果图附源码下载
Oct 08 Javascript
jQuery 常用代码集锦(必看篇)
May 16 Javascript
ionic2 tabs使用 Modal底部tab弹出框
Dec 30 Javascript
jquery实现手机端单店铺购物车结算删除功能
Feb 22 Javascript
javascript 操作cookies详解及实例
Feb 22 Javascript
node实现登录图片验证码的示例代码
Apr 20 Javascript
javascript单张多张图无缝滚动实例代码
May 10 Javascript
JavaScript 实现页面滚动动画
Apr 24 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
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
Yii框架弹出框功能示例
2017/01/07 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
jQuery EasyUI API 中文文档 - EasyLoader 加载器
2011/09/29 Javascript
js操作cookie保存浏览记录的方法
2015/12/25 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
AngularJS 遇到的小坑与技巧小结
2016/06/07 Javascript
jQuery获取attr()与prop()属性值的方法及区别介绍
2016/07/06 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
vue实现添加与删除图书功能
2018/10/07 Javascript
在小程序开发中使用npm的方法
2018/10/17 Javascript
bootstrap tooltips在 angularJS中的使用方法
2019/04/10 Javascript
关于JSON解析的实现过程解析
2019/10/08 Javascript
微信小程序自定义头部导航栏(组件化)
2019/11/15 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
Django 导出 Excel 代码的实例详解
2017/08/11 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
2018/02/10 Python
Python判断一个文件夹内哪些文件是图片的实例
2018/12/07 Python
解决在pycharm中显示额外的 figure 窗口问题
2019/01/15 Python
利用python实现逐步回归
2020/02/24 Python
django 模型中的计算字段实例
2020/05/19 Python
python爬虫可以爬什么
2020/06/16 Python
任意一块网页内容实现“活”的背景(目前火狐浏览器专有)
2014/05/07 HTML / CSS
Bose加拿大官方网站:美国知名音响品牌
2019/03/21 全球购物
请写一个C函数,若处理器是Big_endian的,则返回0;若是Little_endian的,则返回1
2015/07/16 面试题
介绍一下SQL Server的全文索引
2013/08/15 面试题
经验丰富大学生村干部自我鉴定
2014/01/22 职场文书
安全标准化实施方案
2014/02/20 职场文书
销售队伍口号
2014/06/11 职场文书
暑假社会实践心得体会
2014/09/02 职场文书
介绍长城的导游词
2015/01/30 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
又涨知识了,自律到底多重要?
2019/06/27 职场文书
导游词之吉林吉塔
2019/11/11 职场文书
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python