Javascript 显示警报时在后台运行代码

Javascript 显示警报时在后台运行代码,javascript,jquery,Javascript,Jquery,这是我的片段 $(函数(){ 设置倒计时(0,1,0); a=数组(); $(窗口).bind('beforeunload',function(){ 如果(a['endTime']){ 返回(“你在测试中”); } }); }); 功能设置倒计时(小时、分钟、秒){ $(“.timer”).removeClass(“common_displayne”); timerInterval=设置间隔( 函数(){ if(hours.toString().length==1){ 小时数=“0”+小时数;

这是我的片段

$(函数(){
设置倒计时(0,1,0);
a=数组();
$(窗口).bind('beforeunload',function(){
如果(a['endTime']){
返回(“你在测试中”);
}
});
});
功能设置倒计时(小时、分钟、秒){
$(“.timer”).removeClass(“common_displayne”);
timerInterval=设置间隔(
函数(){
if(hours.toString().length==1){
小时数=“0”+小时数;
}
if(minutes.toString().length==1){
分钟=“0”+分钟;
}
if(seconds.toString().length==1){
秒=“0”+秒;
}
如果(秒>0){
秒--;
if(seconds.toString().length==1){
秒=“0”+秒;
}
}否则如果(秒==0&(分钟>0)){
分钟=分钟-1;
秒=59;
}否则如果(分钟==0&(小时>0)){
小时=小时-1;
分钟=59;
}
如果(小时=0和分钟=0和秒=0){
clearInterval(timerInterval);
a、 删除项目(“结束时间”);
}
$(“#timer”).html(小时+”:“+分钟+”:“+秒);
a['endTime']=(小时*3600+分钟*60+秒);
}, 1000);
}


恐怕这就是
警报的工作原理。它正在阻止单线程JavaScript运行,等待输入。我建议用其他方式提醒你。它不仅是非阻塞的,而且还可以使用CSS对实际的警报框进行样式化

JavaScript通常被认为只有一个执行线程 对脚本(*)可见,因此当您的内联脚本 或输入超时,则您将保持完全控制,直到 从块或函数的末尾返回


Javascript是一种单线程语言,这意味着您不能在“后台”运行代码。当javascript提示一个警报窗口时,它会等待用户单击“确定”

如果你真的想要弹出窗口,你必须使用HTML和CSS


如果您担心作弊,我建议您处理用户在测试服务器端的时间,因为用户仍然可以编辑您的javascript,这样他就可以花费更多的时间。您可以通过WebSocket或轮询来实现这一点。

Javascript是单线程的,
alert
s是阻塞的。换句话说,这是不可能做到的。您不能这样做,因为您可以存储警报显示的时间,然后在警报关闭时根据经过的时间调整计时器。。。或者使用模式对话框而不是警报。