如果你不幸踩到了微信瀏覽器中,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}進行處理,這裏介紹的是一個比較周全的做法