如果你不幸踩到了微信浏览器中,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}进行处理,这里介绍的是一个比较周全的做法