【微信bug解决方案】微信 Android js reload失效 解决方案
如果你不幸踩到了微信浏览器中,js调用window.location.reload();完全没有效果这个坑,那么看看以下的解决方案将能帮你出坑
如果你问过了度娘,那么会看到这样的解决方案,使用window.location.href = window.location.href,楼主亲测是没有效果的,
另一种是在地址后面再加一个随机数或者时间戳比如
var date_obj = new Date(); window.location.href = window.location.href + '?timestamp=' + date_obj.getTime();
如果你原来的连接中本身就存在get参数,或者有#hash值,这样的方法就显得有点简单粗暴了
这里楼主做了一个完整的demo,能保证原来url上的所有get参数都在,并且#hash值也都在,只是在get参数中添加一个timestamp参数(如果已经刷新了一次有timestamp参数了,那么改变它的值)
<!DOCTYPE HTML> <html> <head> <meta content="text/html" charset="utf-8" /> <meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <title>slice query_str</title> <style> div{ border: 1px solid #000000; height: 300px; } </style> <script src="../jquery-1.9.1.min.js"></script> <script> function get_query_str(){ var location_url = window.location.href; var parameter_str = location_url.split('?')[1]; parameter_str = parameter_str.split('#')[0]; var $_GET = {}; var parameter_arr = parameter_str.split('&'); var tmp_arr; for(var i = 0, len = parameter_arr.length; i <= len -1; i++){ tmp_arr = parameter_arr[i].split('='); $_GET[tmp_arr[0]] = decodeURIComponent(tmp_arr[1]); } window.$_GET = $_GET; } get_query_str(); </script> </head> <body> <a href="javascript:;" id="J_reload_btn">reload</a> <div id="J_result"> </div> </body> <script> $(document).ready(function(){ var date_obj = new Date(); $('#J_result').html(date_obj.getTime()+'<br>'+JSON.stringify($_GET)); $('#J_reload_btn').click(function(){ /* window.location.reload(); */ $_GET['timestamp'] = date_obj.getTime(); var location_url = window.location.href; var url = location_url.split('?')[0]; var hash_str = location_url.split('#')[1]; var query_arr = []; for(var i in $_GET){ query_arr.push(i+'='+$_GET[i]); } if(query_arr){ url += '?' + query_arr.join('&'); } if(hash_str){ url += '#' + hash_str; } window.location.href = url; }); }); </script> </html>
其中<head>中的函数是用来获取所有get参数的,上一篇文章(http://blog.csdn.net/snow_finland/article/details/52623047)已经介绍了。
当然如果能确定url带有多少参数,有没有hash,也可以简单的在后面加?timestamp={timestamp}或×tamp={timestamp}进行处理,这里介绍的是一个比较周全的做法