【发布时间】:2014-08-04 10:28:29
【问题描述】:
我一直在为我的网页开发自动注销功能。作为其中的一部分,我在代码的 3 个不同位置实现了window.location.reload(true)。其中两个是自动的,一个附加到链接上。链接总是有效,但自动链接并不总是有效,我不明白为什么。
对于自动注销,由 debouncer 设置:
var userActionTimeout = debounce(function(e) {
console.log("inaction timeout, reloading page");
window.location.reload(true);
},15000;);
$(document.body).on('mousemove keydown click scroll',userActionTimeout);
理论上应该在一定量的不活动后重新加载页面。
其他两种用途发生在某些类型的 AJAX 数据提交之后(例如,发送的明显错误的数据,只有在客户端被修改时才会发生)触发注销。当然,服务器会忽略任何进一步的 AJAX 提交,服务器将为客户端提供的下一个页面是登录页面。如果这种情况无意中发生,AJAX 会向客户端发送一条错误消息,其中包括以下内容:
<a href="#" onclick="window.location.reload(true);">refresh</a> to continue session
我还实现了一个超时,如果此链接被提供,也会发生这种情况,这发生在收到 AJAX 响应之后:
if (typeof response._forceRefresh !== 'undefined' && response._forceRefresh) {
console.log('reload firing');
/*
some code to insert the link into a spotlight here
*/
setTimeout(function(){console.log('reloading in 3s...');},7000);
setTimeout(function(){
console.log('reloading...');
window.location.reload(true);
},10000);
}
但是我遇到的问题是:大多数时候,去抖动页面重新加载有效(在 firefox 和 chrome 中测试),但偶尔它不会。该链接始终有效,但 AJAX 响应重新加载约为 50/50。我知道自从链接出现以来它会收到来自服务器的响应,但实际上它通常不会自动重新加载页面。
发生了什么事?
【问题讨论】:
-
试试这个
window.location.href=window.location
标签: javascript jquery reload