上周接到个需求,需求是这样的:用户扫一扫二维码会产生一个链接,该链接会向后端发送个请求,返回一个 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 放到服务器上,然后生成个二维码扫一扫。

最新文章

  1. css 图片垂直居中总结
  2. NotSerializableException解决方法
  3. JMeter2.13 连接 sql server
  4. Linux技巧:一次删除一百万个文件最快方法
  5. http header详解
  6. ESB概述
  7. 我是如何理解Java抽象类和接口的
  8. 【HDOJ】1241 Oil Deposits
  9. swift 关于闭包和函数
  10. ArcGIS连带文字注记导出为CAD格式
  11. Android Weekly Notes Issue #288
  12. Webservice 从客户端中检测到有潜在危险的 request.form值[解决方法]
  13. day11---函数对象、名称空间、作用域、闭包函数
  14. cocos2d-x JS 重力感应监听事件
  15. Costura.Fody合并DLL和EXE
  16. idea创建maven项目速度慢?别急,这有三种方案
  17. Javascript面向对象编程(二):构造函数的继承 作者:yuan一峰
  18. gcc对c++标准的支持
  19. C# winfrom 当前程序内存读取和控制
  20. spring mvc 请求参数日期格式化 代码

热门文章

  1. SQLServer的Login迁移脚本
  2. Request Tracker 4.0.13 发布
  3. c#中的static
  4. VisualSvn server 权限配置
  5. Kali Linux Web 渗透测试视频教程— 第十六课-拒绝服务攻击
  6. vim和tmux主题颜色不一致问题
  7. [ACM_数学] LA 3708 Graveyard [墓地雕塑 圈上新加点 找规律]
  8. JavaScript原生DOM操作API总结
  9. 正则表达式提取url中的参数,返回json字符串
  10. Atom插件安装及常用插件推荐