定时器JavaScript未在Chrome&最小化窗口时的Mozilla
Timer JavaScript not running in Chrome & Mozilla when window minimized
嗨,我使用的是Java脚本计时器,它在IE中运行良好,但在Chrome中,当窗口最小化时,它会变得太慢,在Mozilla中,它会停止计时器。有人能提出什么建议吗?我的代码如下:-
<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>
您不能使用setTimeout
来制作可靠的计时脚本。
John Resig解释了JavaScript计时器的工作原理:http://ejohn.org/blog/how-javascript-timers-work/
简短的版本是总是有一个小的延迟。传递给setTimeout
的毫秒参数是"尽力而为"。
如果你想显示实时计时器,可以考虑经常轮询时间。如果事件循环速度减慢,则不会影响您跟踪时间的能力,只会减少更新。
http://jsfiddle.net/64pcr7pw/
<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>
相关文章:
- 全局窗口热键在最小化chrome窗口时调用js函数
- 剑道窗口还原在最小化然后还原时不调用调整大小事件
- 如何禁用最大化,最小化和关闭按钮以打开新窗口
- 浏览器窗口最小化/最大化事件
- 最小化窗口时HTML视频暂停
- 导航切换仅在最小化窗口时可见
- 最小化窗口时出现AudioContext计时问题
- 如何使用jQuery平滑地最小化可拖动弹出窗口
- 在扩展中,管理最小化了底部水平的窗口,而不是重叠
- 页面可见性 API 在窗口最小化时无法在 Chrome OS X 上运行
- 火狐扩展:检查窗口是否最小化
- 我不希望弹出窗口在用户单击离开它时最小化
- 显示弹出窗口而不最小化
- 有没有办法在用户切换到iPhone上的另一个窗口时看到浏览器窗口最小化
- 如何确定Chrome窗口是否从Chrome扩展最小化
- 在SVN窗口中最小化JS和CSS的步骤
- JavaScript setInterval()和最小化的窗口
- 想要在浏览器窗口最小化或最大化时重置RadGrid高度
- 当窗口最小化时,提醒用户浏览器内事件——而不是html5通知
- 设置浏览器窗口最小化的最小大小限制