Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.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 当警报框出现时,我如何在10秒后刷新?_Javascript_Reactjs - Fatal编程技术网

Javascript 当警报框出现时,我如何在10秒后刷新?

Javascript 当警报框出现时,我如何在10秒后刷新?,javascript,reactjs,Javascript,Reactjs,所以我一直在尝试自动注销,但在alertbox alertbox询问你是否想注销(如果你还没有离开网站,但正在浏览一些信息,不想注销时自动显示)10秒后,我找不到一种方法注销。基本上,我想让它自动注销,如果你不按下任何东西的alertbox后选择的时间,如10秒。 这是密码 var refresh_rate = 5; // <-- In seconds, change to your needs var reset_rate = 7; // <-- In seconds logs o

所以我一直在尝试自动注销,但在alertbox alertbox询问你是否想注销(如果你还没有离开网站,但正在浏览一些信息,不想注销时自动显示)10秒后,我找不到一种方法注销。基本上,我想让它自动注销,如果你不按下任何东西的alertbox后选择的时间,如10秒。 这是密码

var refresh_rate = 5; // <-- In seconds, change to your needs
var reset_rate = 7; // <-- In seconds logs out after not pressing OK or cancel in automatic logout
var last_user_action = 0;
var has_focus = false;
var lost_focus_count = 0;
var focus_margin = 10; // If we lose focus more then the margin we want to refresh


function reset() {
    last_user_action = 0;
    console.log("Reset");
}

function windowHasFocus() {
    has_focus = true;
}

function windowLostFocus() {
    has_focus = false;
    lost_focus_count++;
    console.log(lost_focus_count + " <~ Lost Focus");
}

setInterval(function () {
    last_user_action++;
    refreshCheck();
}, 1000);

function refreshCheck() {
    var focus = window.onfocus;
    if ((last_user_action >= refresh_rate && !has_focus && document.readyState == "complete") || lost_focus_count > focus_margin) {
      var answer = confirm("Session About To Timeout\n\n       You will be automatically logged out.\n       Confirm to remain logged in.")
        if (answer){

            refresh_rate = 10;
        }
        else{
          window.location.reload(); // If this is called no reset is needed
          reset(); // We want to reset just to make sure the location reload is not called.
        }
    }
}
我希望有人能帮我解决这个问题

如果你使用确认、警告或提示,你就无法识别那些90年代的遗迹。它们使主JavaScript线程大部分停止,现在有细微差别,这意味着你不能做其他任何事情


为此,您需要用显示消息的DOM元素替换确认,这不会阻止主JavaScript线程。

打开警报/确认框会阻止事件循环,直到它返回,因此在此期间无法执行任何操作。非常感谢,现在我将尝试一些实际可行的方法!