在我的网页上,我有一个使用javascript setTimeout()
的倒数计时器。
function Tick() {
if (RemainingSeconds <= 0) {
alert("Time is up.");
return;
}
RemainingSeconds -= 1;
ElapsedSeconds += 1;
UpdateTimerDisplay();
window.setTimeout("Tick()", 1000);
}
我还在onbeforeunload
上触发了一项功能,以“防止”用户离开该页面。
window.onbeforeunload = function () {
if (!isIEAjaxRequest) {
return "You should use the logout button to leave this page!";
}
else {
isIEAjaxRequest = false;
}
};
问题在于,“你确定要离开这个页面吗?”窗口提示,它暂停setTimeout()
功能。有关如何防止这种情况的任何想法吗?
答案 0 :(得分:4)
你做不到。 Javascript是严格单线程的,因此任何模态弹出窗口都会暂停其他所有内容。
答案 1 :(得分:2)
可能的解决方法可能是使用var before = new Date()
存储对话框出现之前的时间,然后使用该对话框计算对话框消失后的传递时间以弥补错过的秒数。
答案 2 :(得分:1)
不,当UI线程与其他任务一起使用时(在这种情况下,呈现该本机模式对话框提示),您无法在后台更新UI。