Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript window.location.reload(true)工作不一致_Javascript_Jquery_Reload - Fatal编程技术网

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

Javascript window.location.reload(true)工作不一致,javascript,jquery,reload,Javascript,Jquery,Reload,我一直在为我的网页开发自动注销功能。作为其中的一部分,我在代码中的3个不同位置实现了window.location.reload(true)。其中两个是自动的,一个连接到链接。链接总是有效的,但是自动链接并不总是有效的,我不明白为什么 对于自动注销,由取消公告者设置一个: var userActionTimeout = debounce(function(e) { console.log("inaction timeout, reloading page"); window.lo

我一直在为我的网页开发自动注销功能。作为其中的一部分,我在代码中的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
然而,我遇到的问题是:大多数情况下,debounce页面重新加载工作正常(在firefox和chrome中进行了测试),但偶尔不会。链接总是有效的,但是AJAX响应重载大约是50/50。我知道它会在链接出现后收到服务器的响应,但通常不会自动重新加载页面


发生了什么事?

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


另一个想法可能是尝试使用元刷新元素。建议使用的另一个线程是:

试试这个
window.location.href=window.location
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);
}