今天接到公司反馈:手机端页面的下载按钮在iOS微信内置浏览器里面点击无效。
经过测试,在IOS设备上,微信内置浏览器无效,用外部浏览器能够正常使用,用Safari浏览器也能够正常下载。
在安卓设备上,能够正常使用,下载链接跳转到腾讯的“应用宝”上。 
IOS的微信,未升级前,能够正常下载,是跳转到app store下载。
百度之后,确认问题出在了微信上,大概腾讯有做限制。 
原因:最新版微信在所有开放的 webview(网页界面)里禁止了通过链接打开本地 app 或跳转到 app store,只有自家使用的 webview 能够打开 app 或跳转 app store。
而且这种做法不像是 bug 所致,而是刻意为之。 
用意:微信是一个重要的互联网入口和应用入口,但是微信为了自家利益,需要控制入口和流量,进而加强对公共帐号和第三方应用的控制,打击竞争对手 
解决办法:微信内置浏览器右上角的跳转按钮“在 Safari 中打开”可以间接的跳转 App Store ,
所以最终我们的解决方案是如果是 iOS 的微信内置浏览器,点击按钮后,用弹出提示的方法来取代直接跳转。 
可参考http://dearb.me/archive/2013-11-07/ios7-weixin-unsupport-redirect-to-app-store/ 
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 
 | <!DOCTYPE html> <html>
 <head>
 </head>
 <body>
 <div class="wrap">
 </div>
 <a class="dlTip" href="{$apkurl}" target="_blank">
 <div class="d-btn">立即下载</div>
 <div class="d-close" onclick="$('.dlTip').css('display','none');return false;"></div>
 </div>
 </a>
 </body>
 <script>
 
 $(".d-btn").click(function(){
 var ua = navigator.userAgent.toLowerCase();
 if ( /iphone|ipod/.test(ua)) {
 if(/micromessenger/.test(ua)){
 wx_guide_index('$url');
 }
 }
 });
 
 
 var wx_guide_index=function(src){
 var wrap=$('.wrap')[0];
 var img=document.createElement('img');
 var scrollTop=0;
 
 img.src=src;
 img.setAttribute('style','position:absolute;z-index:999999;top:0px;left:0px;width:'+document.documentElement.clientWidth
 +'px;height:'+document.documentElement.clientHeight+'px;');
 
 
 function popup(e){
 scrollTop=document.documentElement.scrollTop||document.body.scrollTop;
 wrap.style.height=document.documentElement.clientHeight+'px';
 wrap.style.overflow='hidden';
 document.body.appendChild(img);
 AddEvent(img,'click',hide);
 };
 
 var hide=function(){
 window.scrollTo(0,scrollTop);
 wrap.style.height='auto';
 wrap.style.overflow='auto';
 document.body.removeChild(img);
 RemoveEvent(img,'click',hide);
 }
 popup();
 }
 </script>
 
 |