Kyl*_*yle 19 javascript jquery
setTimeout("myfunction()",10000);当页面不活动时,有没有办法停止计数.例如,
myfunction() 直到他们再回来8000ms才开火.Šim*_*das 37
干得好:
(function() {
var time = 10000,
delta = 100,
tid;
tid = setInterval(function() {
if ( document.hidden ) { return; }
time -= delta;
if ( time <= 0 ) {
clearInterval(tid);
myFunction(); // time passed - do your work
}
}, delta);
})();
Run Code Online (Sandbox Code Playgroud)
现场演示: http ://jsfiddle.net/simevidas/J68dJ/3/show/
您可以执行以下操作:
$([window, document]).blur(function() {
// Clear timeout here
}).focus(function() {
// start timeout back up here
});
Run Code Online (Sandbox Code Playgroud)
窗口适用于 IE,文档适用于浏览器世界的其余部分。
ŠimeVidas给出了很好的答案,它帮助我完成了自己的编码.为了完整起见,我举了一个例子,如果你想使用setTimeout而不是setInterval:
(function() {
function myFunction() {
if(window.blurred) {
setTimeout(myFunction, 100);
return;
}
// What you normally want to happen
setTimeout(myFunction, 10000);
};
setTimeout(myFunction, 10000);
window.onblur = function() {window.blurred = true;};
window.onfocus = function() {window.blurred = false;};
})();
Run Code Online (Sandbox Code Playgroud)
您将看到窗口模糊检查的时间设置比正常时间短,因此您可以根据窗口重新获得焦点时需要多长时间运行该功能来设置此值.
| 归档时间: |
|
| 查看次数: |
15367 次 |
| 最近记录: |