这实际上是我之前问题的延续。我跟踪发现,在chrome、safari、IE等浏览器上,由于reload,它无法正常工作。因此,是否有任何方法可以代替 window.location.reload() 与 chrome、safari 或 IE 兼容?提前致谢。
问问题
537 次
1 回答
1
如果您正在寻找一种替代方式来重新加载页面,而不是location.reload()
;您还可以使用:
window.location.href = window.location.href;
另一种(但类似)方式:
window.location = document.URL;
还有其他方式:
window.location.assign(document.URL);
// or
window.location.replace(location.href); // this will prevent the page to be saved in browser history (back button will not navigate to previous page);
// or
history.go(0); // (not recommended) history object is not public standard but all major browsers support it.
注意location.reload()
需要一个boolean
参数。它的默认值是false
从缓存中重新加载页面。如果将其设置为true
它将强制浏览器从服务器获取页面。
阅读您的另一篇文章后(我不知道您是否考虑过Soc 的回答);除了设置 cookie,我认为您还可以从新 URL 中的查询字符串值中设置/获取数据:
将一些数据传递到重定向页面:
// pass the selected index:
var selectedIndex = $('#select-box')[0].selectedIndex;
window.location.href = window.location.href + '?selIndex=' + selectedIndex;
// pass the selected value:
var selectedValue = encodeURIComponent($('#select-box').val());
window.location.href = window.location.href + '?selValue=' + selectedValue;
从查询字符串中获取数据:
function queryStringToObject(strQS)
{
var qs = {};
var pairs = strQS.split('&');
for (var i = 0; i < pairs.length; i++)
{
var key_val = pairs[i].split('=');
if (key_val.length > 0)
qs[key_val[0]] = key_val[1] && decodeURIComponent(key_val[1]);
}
return qs;
}
var strQS = 'field1=value1&field2=value2&field3=value3';
var qs = queryStringToObject(strQS);
console.log(qs);
这将输出:
{ field1: "value1", field2: "value2", field3: "value3" }
您可以使用window.location.search.substring(1)
从当前 URL 获取查询字符串。
于 2013-02-13T22:55:44.340 回答