警报消息后继续循环

时间:2014-03-24 10:23:41

标签: javascript jquery

以下是用于检查我的页面会话的函数。单击警报消息后,页面将重新加载。

var timeleft = 60;

function checkTime() {
    timeLeft--;

    if (timeLeft == 30 ) 
    {
        alert("30 secs left.");
        window.location.reload();
    }

}

无论如何,timeleft继续减去(如果用户没有注意到警告消息),那么当timeleft = 0时它将重定向到注销页面。

3 个答案:

答案 0 :(得分:2)

alert()是一个模态,它会停止javascript执行。检查此代码:

var start = new Date();
var start2;
window.setTimeout(function() {
    var end = new Date();
    var result = "time from start: " + (end.getTime() - start.getTime())
    result += "\ntime from alert: " + (end.getTime() - start2.getTime())
    result += "\nalert was open for: " + (start2.getTime() - start.getTime())
    alert(result);
}, 500);
window.setTimeout(function() {
    alert("hello");
    start2 = new Date();
}, 100);

上层代码小提琴:http://jsfiddle.net/aorcsik/vfeH2/1/

查看此代码,它显示即使在alert()期间停止setTimeout,但您可以检查用户查看提醒的时间,并通过减少更新您的计数器(timeLeft)测量时间由您的股票代码延迟划分。

解决方案:所以我的解决方案是测量用户查看警报模式的时间,每当他点击确定时,检查他的会话是否结束,如果是重定向到注销,否则执行通常的重定向。

var start = new Date();
alert("xxx");
var t = (new Date()).getDate() - start.getDate();
if (t / 1000 > timeLeft) {
    /* logout */
} else {
    /* redirect */
}

注意:另一个解决方案是使用一些html弹出窗口而不是javascript警报,这不会阻止javascript执行

答案 1 :(得分:2)

如果您想要异步提醒,可以试试这个

setTimeout(function() { alert('30 secs left'); }, 1);

但是如果你想要一个定时注销,你可以做这样的事情:

function checkTime() {
    setInterval(function(){alert("30 secs left.")},30000); // shown at 30 seconds
    setInterval(function(){logout()},60000); // called at 60 seconds
}

function logout() {
    // logout functionality
}

答案 2 :(得分:1)

您的代码评论很奇怪 首先你使用一个数字(60)并将其视为(两分钟)然后提醒它(剩下30秒)..

无论如何...... 你想要倒计时,只剩下30秒你想重新加载页面!!

这里的问题是,当您重新加载页面时,您将重置计数(如代码中的60)

解决方案是以下之一: 1-保存localForage中的倒计时,如@Fabrizio所指出的,当再次重新加载页面时,请使用保存的反对值。 但是,此解决方案假设您的用户浏览器可以保存到localstorage

2-秒解决方案是您使用倒计时发布您的页面并重新加载倒计时.. 让我们说你的页面地址是:www.myexampleaddress.com/mypage 然后你拨打以下地址:www.myexampleaddress.com/mypage?timeleft = 30

并在服务器上捕获此内容,并使用查询字符串中的值从服务器重新加载页面。

所以警报之后应该是这样的

var myURL = location.href+'?timeleft=30';
location.href =myURL;

我希望得到帮助:)