微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我一直在为我的网页开发自动注销功能.作为其中的一部分,我在我的代码中的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和chrome中测试),但偶尔也没有.链接始终有效,但AJAX响应重新加载大约为50/50.我知道它会收到服务器的响应,因为链接显示,但通常它实际上并没有自动重新加载页面.

到底是怎么回事?

解决方法:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐