微信内置浏览器不支持下载文件应用的解决方法答疑

由于微信的限制,应用文件在内置浏览器中下载全部被屏蔽掉,造成很多人用微信扫描二维码下载时点击下载按钮没反应,我想到的是做一个提示用户在浏览器中打开下载。

之前写过的两篇文章:微信打开网址添加在浏览器中打开提示 和 ,尽管已经做得很简单,但发现很多问这类问题的都是小白。

其实原来很简单,就是判断当前是在微信内置浏览器中,然后将默认隐藏的提示层显示出来。

第一步:判断微信的UA。

var ua = navigator.userAgent;
var isWeixin =  !!/MicroMessenger/i.test(ua);

第二步:引入默认隐藏层。

<a href="http://caibaojian.com/test.apk" id="JdownApp">点击下载APP</a>
<a href="http://caibaojian.com/test.apk" id="JdownApp2" class="btn-warn">点击下载APP2</a>
<div class="wxtip" id="JweixinTip">
<span class="wxtip-icon"></span>
<p class="wxtip-txt">点击右上角<br/>选择在浏览器中打开</p>
</div>

第三步:添加CSS样式

.wxtip{background: rgba(0,0,0,0.8); text-align: center; position: fixed; left:0; top: 0; width: 100%; height: 100%; z-index: 998; display: none;}
.wxtip-icon{width: 52px; height: 67px; background: url(weixin-tip.png) no-repeat; display: block; position: absolute; right: 20px; top: 20px;}
.wxtip-txt{margin-top: 107px; color: #fff; font-size: 16px; line-height: 1.5;}

第四步:点击按钮显示隐藏层,点击隐藏层关闭,总的JS代码如下:

function weixinTip(ele){
	var ua = navigator.userAgent;
	var isWeixin = !!/MicroMessenger/i.test(ua);
	if(isWeixin){
		ele.onclick=function(e){
			window.event? window.event.returnValue = false : e.preventDefault();
			document.getElementById('JweixinTip').style.display='block';
		}
		document.getElementById('JweixinTip').onclick=function(){
			this.style.display='none';
		}
	}
}
var btn1 = document.getElementById('JdownApp');//下载一
weixinTip(btn1);
var btn2 = document.getElementById('JdownApp2'); //下载二
weixinTip(btn2);

以上代码,你再也不用担心有多个按钮了。

全部代码演示:eweima

演示

原文链接:微信内置浏览器不支持下载文件应用的解决方法答疑 版权所有,转载时请注明出处,违者必究。
注明出处格式:前端开发博客 (http://caibaojian.com/weixin-tip3.html)

发表评论

请登录后发表评论:

17 Responses to “微信内置浏览器不支持下载文件应用的解决方法答疑”

  1. 独立怪人

    本人菜鸟一枚,什么都不懂求博主教学演示!!!

    登录回复
  2. 攀步人

    博主,你这个示例的图片weixin-tip.png哪里下载啊

    登录回复
  3. 菲菲1020304050

    请问博主,怎么把这部分放入二维码里面啊,不知道用qrcode( );怎么调用,菜鸟一枚,求教~

    登录回复
  4. Bigbang全球粉丝后援团

    用安卓手机测试也是同样的问题出现

    登录回复
  5. Bigbang全球粉丝后援团

    老大 我测试了好几遍。iphone6 浏览器 和微信 都有提示。出现遮罩图层,提示在浏览器中打开。麻烦你在看下?

    登录回复
    • 前端博客

      看一下演示代码,把
      //if(isWeixin){
      ele.onclick=function(e){
      window.event? window.event.returnValue = false : e.preventDefault();
      document.getElementById('JweixinTip').style.display='block';
      }
      document.getElementById('JweixinTip').onclick=function(){
      this.style.display='none';
      }
      //}

      上面这两个注释去掉,我这里是为了方便测试查看效果才加上的。

      登录回复
  6. Bigbang全球粉丝后援团

    浏览器也有提示 判断错误了吧

    登录回复
  7. 努力去回忆

    对我这种菜鸟来说真是帮了大忙了

    登录回复
  8. 这年头名字还真不好起

    你这个微信扫描是可以弹出来,但是通过浏览器扫描同样弹出遮罩层了,判断写的不对啊

    登录回复
  9. 如此而已11629

    你好,请问这个引导用户在safari浏览器中下载,怎么样能够跳转到Safari浏览器中自动弹出安装 的那个框,不用再点击下载。

    登录回复
    • 前端开发博客

      用户在浏览器中打开,是自己选择是在哪个浏览器的,你可以引导文字上加上提示用户在Safari中打开。然后用户打开Safari之后,你这个页面再判断是Safari的话,就跳转到下载链接。这样子就会直接下载安装。

      登录回复
  10. dengduck

    你好,可以显示层了,但是点击右上角打开后,还是回到了这个页面,并没有到达两个点击分别的链接啊?为什么呢?

    登录回复