javascript浏览器超时第二个计时器
javascript browser timeout second timer
我正试图用Javascript设置会话超时,看起来警报正在阻止计时器启动。这是我的代码:
var first_timer = 2 * 1000;
var second_timer = 8 * 1000;
var down = -1;
function initTimer() {
down = setTimeout(processTimeout, first_timer)
}
function processTimeout() {
down = setTimeout(logout, second_timer);
alert ("Timeout of first timer, timerid:" + down );
}
function logout() {
alert("You are logged out");
window.location = "http://www.google.com"
}
function clearTimer() {
if ( -1 != down )
clearTimeout(down);
alert("Restarting timer");
initTimer();
}
initTimer();
当我运行上述程序时,我看到第二个计时器只有在第一个警报被解除后才启动。即使警报没有解除,我如何确保第二个计时器在第一次超时后立即启动?
Thx
alert()
函数会阻塞其他所有内容,直到它被解除。您可以使用所谓的模式对话框来创建自己的不阻塞的警报样式消息。
jQuery UI具有此功能。
这很可能取决于您使用的浏览器。我没有遇到你描述的最新Firefox的问题。
但是,直到第一个计时器关闭,第二个计时器警报框才会显示。
这是因为JavaScript解释器是而不是多线程的。但JavaScript本身是高度异步的,尤其是在定时器、AJAX和动画等长延迟请求上。这有时会给人一种多线程的感觉。
事实上,在您的代码示例中,第二个计时器按预期启动。当我关闭第一个对话框时,比方说,在它出现10秒后,第二个对话框会立即显示。尽管如此,这可能是你的问题,在你解除第一个警报之前,它永远不会显示,因为警报是一个同步调用。这样,主事件循环在被解除之前不会恢复控制。
这种情况的解决方法是使用"HTML"对话框,例如Jquery UI提供的对话框。
相关文章:
- 为什么不'在JQuery中找到第二个css选择器的工作
- 倒计时计时器应该持续两个php页面
- 时间选择器:如何通过更改第一个值来更改第二个值
- 从第一个日期选择器定义第二个日期选择器的开始日期
- 在计时器上引用多个URL
- 在多个警报和提示后面使用计时器
- 筛选器's的第二个参数不起作用
- 如何制作两个倒计时计时器,如果一个开始,另一个会停止
- javascript浏览器超时第二个计时器
- 更改第二个日期时的第一个日期选择器将自动更改一年
- 根据角度日期选取器中的第一个日期选取器更改第二个日期选取器中的月份
- 单个 HTML 页面上有多个计时器
- 当我单击返回第一个切换时,第二个切换器应该关闭
- Jquery Countdowntimer 错误地为多个跨度显示相同的计时器
- 为什么e.fn.e.init或x.fn.x.init(chrome调试器中的jQuery实例名称)中有第二个e或x
- javascript 中用于计时器的多个 if-else 语句
- 1 页上有多个 JavaScript 计时器
- 如何在 mvc 项目中同步这两个计时器
- 可调整大小是添加第二个包装器,而不是更改第一个包装器的大小
- 为什么日期选择器在自动打开第二个日期选择器上第一次更改月份时显示同月