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

window.location.reload(true) working inconsistently

本文关键字:工作 不一致 true location reload Window      更新时间:2023-09-26

我一直在为我的网页的自动注销功能工作。作为其中的一部分,我在代码中的3个不同位置实现了window.location.reload(true)。其中两个是自动的,一个是连接到一个链接。链接总是有效的,但是自动链接并不总是有效,我不明白为什么。

对于自动注销,由反编译器设置:

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 &Chrome),但偶尔也不会。链接总是有效的,但是AJAX响应的重新加载大约是50/50。我知道自从链接出现后,它就收到了服务器的响应,但它通常不会自动重新加载页面。

怎么回事?

当我在网页上遇到不一致时,它通常涉及到我没有意识到正在发生的缓存。如果您还没有这样做,请在您的项目中考虑到这一点,并查看是否有一个有效的位置可以强制它不缓存页面。

另一个想法可能是尝试使用meta refresh元素。有另一个线程,这是建议:自动注销空闲超时使用jquery php