Chrome&;中没有运行计时器JavaScript;窗口最小化时的Mozilla
大家好,我使用的是Java脚本计时器,它在IE中运行良好,但在Chrome中,当窗口最小化时,它会变得太慢,在Mozilla中,它会停止计时器。有人能提出什么建议吗?我的代码如下:-Chrome&;中没有运行计时器JavaScript;窗口最小化时的Mozilla,javascript,timer,Javascript,Timer,大家好,我使用的是Java脚本计时器,它在IE中运行良好,但在Chrome中,当窗口最小化时,它会变得太慢,在Mozilla中,它会停止计时器。有人能提出什么建议吗?我的代码如下:- <html> <head> <script> var millisec = 0; var seconds = 0; var timer; function display(){ if (millisec>=9){ millisec=0 seco
<html>
<head>
<script>
var millisec = 0;
var seconds = 0;
var timer;
function display(){
if (millisec>=9){
millisec=0
seconds+=1
}
else
millisec+=1
document.d.d2.value = seconds + "." + millisec;
timer = setTimeout("display()",100);
}
function starttimer() {
if (timer > 0) {
return;
}
display();
}
function stoptimer() {
clearTimeout(timer);
timer = 0;
}
function startstoptimer() {
if (timer > 0) {
clearTimeout(timer);
timer = 0;
} else {
display();
}
}
function resettimer() {
stoptimer();
millisec = 0;
seconds = 0;
}
</script>
</head>
<body>
<h5>Millisecond Javascript Timer</h5>
<form name="d">
<input type="text" size="8" name="d2">
<input type="button" value="Start/Stop" onclick="startstoptimer()">
<input type="reset" onclick="resettimer()">
</form>
</body></html>
var毫秒=0;
var秒=0;
无功定时器;
函数显示(){
如果(毫秒>=9){
毫秒=0
秒+=1
}
其他的
毫秒+=1
document.d.d2.value=秒+“+”毫秒;
定时器=设置超时(“显示()”,100);
}
函数starttimer(){
如果(计时器>0){
返回;
}
显示();
}
函数stoptimer(){
清除超时(计时器);
定时器=0;
}
函数startstoptimer(){
如果(计时器>0){
清除超时(计时器);
定时器=0;
}否则{
显示();
}
}
函数resettimer(){
停止计时器();
毫秒=0;
秒=0;
}
毫秒Javascript定时器
您不能使用setTimeout
创建可靠的计时脚本
John Resig解释了JavaScript计时器的工作原理:
简短的版本是,总有一个小的延迟。传递给setTimeout
的毫秒参数是“最大努力”
如果你想展示一个实时计时器,考虑一下经常轮询时间。如果事件循环速度减慢,则不会影响您跟踪时间的能力,您只会得到较少的更新
var定时器,时间=0,启动时间=0;
函数startstoptimer(){
中频(定时器){
时间+=新日期().getTime()-开始时间;
开始时间=0;
清除间隔(计时器);
定时器=空;
}否则{
开始时间=新日期().getTime();
定时器=设置间隔(函数(){
document.d.d2.value=时间+新日期().getTime()-开始时间;
}, 10);
}
}
函数resettimer(){
时间=0;
开始时间=新日期().getTime();
document.d.d2.value=“0”;
}
请参阅。对Firefox不太清楚。认识到setTimeout(“display()”,100)
最好写成setTimeout(display,100)
(无括号!),这很有用。JavaScript将评估“display()”
,这是您不需要的低效。我尝试调用logout(),当计时器值为9000毫秒时,它将第一次执行,但此后不会注销。
<script type="text/javascript">
var timer, time = 0, start_time = 0;
function startstoptimer() {
if (timer) {
time += new Date().getTime() - start_time;
start_time = 0;
clearInterval(timer);
timer = null;
} else {
start_time = new Date().getTime();
timer = setInterval(function () {
document.d.d2.value = time + new Date().getTime() - start_time;
}, 10);
}
}
function resettimer() {
time = 0;
start_time = new Date().getTime();
document.d.d2.value = "0";
}
</script>
<form name="d">
<input type="text" size="8" name="d2"/>
<input type="button" value="Start/Stop" onclick="startstoptimer()"/>
<input type="reset" onclick="resettimer()" />
</form>