javascript - 使用 JavaScript 在点击时重置计时器

标签 javascript jquery

我有这个 JS 代码:

<script>
$(document).ready(function () {
    window.setTimeout(function () {
        $('#logout_warning').reveal();
    }, 6000)
});
$(document).ready(function () {
    window.setTimeout(function () {
        location.href = "/login/logout.php?url=/index.php?r=inactivity";
    }, 12000)
});
</script>

它在 X 秒后显示 DIV,然后在 Y 秒后重定向页面

有没有办法创建一个链接,将计时器重置回 X 秒,而无需刷新页面?

最佳答案

您可以像这样为 setTimeout 编写一个包装器

function myTimeout(fn, delay) {
    var o = {i: null};
    o.cancel = function () {
        if (o.i) window.clearTimeout(o.i);
    };
    o.reset = function () {
        if (o.i) window.clearTimeout(o.i);
        o.i = window.setTimeout(fn, delay);
    };
    o.reset();
    return o;
}

然后

// common (ancestor?) scope
var t;

// descendant scope, set
t = myTimeout(function () {
    $('#logout_warning').reveal();
}, 6000);

// descendant scope where you attach listener to your link
$('#my_link').on('click', function () {
    t.reset(); // re-start the timeout
    return false;
});

关于javascript - 使用 JavaScript 在点击时重置计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22056913/

相关文章:

javascript - sapui5 block View 渲染直到模型加载

Javascript - 未捕获的类型错误 : Cannot read property 'value' of undefined

javascript - 避免 var _this = this;在编写 jQuery 事件处理程序时

jquery - 尝试使用 jquery 转义方括号时出现非法字符

javascript - 如何从异步调用返回响应?

javascript - 如何避免使用 java 脚本重置页面刷新/页面加载时的计时器值?

javascript - 使用 javascript 将表单输入值插入 href 目标 URL

javascript - 花哨的 jQuery 标签选择器

javascript - 单击按钮时更改 Element.attr

javascript - 仅使用 javascript 将多个图像附加到 div