Javascript setInterval在警报状态下停止工作

Javascript setInterval在警报状态下停止工作,javascript,jquery,Javascript,Jquery,我正在创建一个MCQs测验,每个问题都有一个时间。我在脚本中还使用了onbeforeunload,以防止用户意外地离开测验页面。但当警报显示时,我的设置间隔计数器停止工作。即使有警报,我如何使倒计时不停止 为了进一步解释我的问题,这里的浏览器对话框被阻塞。所有脚本在打开时停止执行。无法更改此行为。浏览器对话框被阻止。所有脚本在打开时停止执行。您无法更改此行为。不要从90秒开始,并尝试每秒减少1秒,而是计算当前日期+90秒以获得结束日期。然后,在每次调用setTimeout时,计算到结束日期的当前

我正在创建一个MCQs测验,每个问题都有一个时间。我在脚本中还使用了onbeforeunload,以防止用户意外地离开测验页面。但当警报显示时,我的设置间隔计数器停止工作。即使有警报,我如何使倒计时不停止


为了进一步解释我的问题,这里的浏览器对话框被阻塞。所有脚本在打开时停止执行。无法更改此行为。

浏览器对话框被阻止。所有脚本在打开时停止执行。您无法更改此行为。

不要从90秒开始,并尝试每秒减少1秒,而是计算当前日期+90秒以获得结束日期。然后,在每次调用setTimeout时,计算到结束日期的当前秒数


当警报可见时,计时器不会前进,但它会跳到警报解除时应该到达的位置。

不要从90秒开始,并尝试每秒减少1秒,而是计算当前日期+90秒以获得结束日期。然后,在每次调用setTimeout时,计算到结束日期的当前秒数



当警报可见时,计时器不会前进,但会跳到警报解除时应该到达的位置。

一种可能的解决方法是,如果调用beforeunload,您可以声明一个var timeCount=新日期来存储时间,并使用它来计算经过的时间/错过的秒数。但在其他方面,Diodeus所说的是正确的。

一种可能的解决方法是,如果调用beforeunload,您可以声明一个var timeCount=new Date来存储时间,并使用它来计算通过的时间/错过的秒数。除此之外,迪奥德乌斯所说的是正确的。

Javascript是单线程的,所以这是不可能的。但您可以记录警报出现的日期,然后记录警报消失的日期。您可能会在这个问题上找到一些帮助:Javascript是单线程的,所以这是不可能的。但您可以记录警报出现的日期,然后记录警报消失的日期。你可能会在这个问题上找到一些帮助:谢谢你的回答。这个问题的替代解决方案是什么?如果用户每次尝试刷新页面时都知道倒计时停止,但决定留在页面上,该怎么办?这给了他额外的时间来回答每一个问题。或者,根据现在的时间计算减去开始时间,而不是计时器。谢谢你的回答。这个问题的替代解决方案是什么?如果用户每次尝试刷新页面时都知道倒计时停止,但决定留在页面上,该怎么办?它为每个问题提供了额外的时间。或者,根据现在的时间计算减去开始时间,而不是计时器。但是,当警报框打开时,这仍然不会生效,是不是…?当警报启动时,您不会得到一个活动的滴答声,但是计时器将提前跳到警报解除时应有的位置。@webeno正确。但一旦警报关闭,它将readjust@mmmshuddup确实如此,我想这取决于OP是否可以在时间结束后保持警惕……事实上,时间结束后我必须显示下一个问题。在Kivak的指导下,这可能会有所帮助,但我必须计算自警报打开和关闭以来经过的时间,并跳过这段时间内的所有问题。例如,每个问题有1分钟30秒,如果警报打开的总时间超过3分钟,则需要跳过2个问题,但在警报框打开时,这仍然不会生效,是不是…?警报打开时,您不会得到活动的滴答声,但当警报解除时,计时器将提前跳到它应该在的位置。@webeno正确。但一旦警报关闭,它将readjust@mmmshuddup确实如此,我想这取决于OP是否可以在时间结束后保持警惕……事实上,时间结束后我必须显示下一个问题。在Kivak的指导下,这可能会有所帮助,但我必须计算自警报打开和关闭以来经过的时间,并跳过这段时间内的所有问题。例如,每个问题有1分钟30秒,如果警报打开的总时间为3分钟,则需要跳过2个问题