【问题标题】:window.location.reload(true) working inconsistentlywindow.location.reload(true) 工作不一致
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 2015-03-03
    • 1970-01-01
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    相关资源
    最近更新 更多