window.location.reload(true)工作不一致

时间:2014-08-04 10:28:29

标签: javascript jquery reload

我一直在为我的网页开发自动注销功能。作为其中的一部分,我在代码中的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);
} 

然而我遇到的问题是这样的:大部分时间,debounce页面重新加载工作(在firefox&amp; chrome中测试),但偶尔也没有。链接始终有效,但AJAX响应重新加载大约为50/50。我知道它会收到服务器的响应,因为链接显示,但通常它实际上并没有自动重新加载页面。

发生了什么事?

1 个答案:

答案 0 :(得分:1)

当我在网页上出现不一致时,通常会涉及我没有意识到正在发生的缓存。如果您还没有,请仔细查看您的项目,看看是否有受影响的位置,您可以强制它不要缓存页面。

另一个想法可能是尝试使用元刷新元素。建议使用另一个主题:auto logout idle timeout using jquery php