我有一个应用于setInterval函数的函数。当我最小化或更改聚焦窗口时,然后返回显示我的网站的浏览器,浏览器播放自从我将焦点更改为另一个窗口后发生的所有事情,以非常快的方式。
当窗口中的焦点窗口发生变化时,有没有办法保持动画,设置间隔?
感谢。
答案 0 :(得分:0)
我发现这篇文章: JavaScript / jQuery: Test if window has focus
对我而言,它适用于谷歌浏览器,但可能是因为它在某些浏览器中不起作用。
这是一个小小的测试:
他的回答:
var window_focus;
$(window).focus(function() {
window_focus = true;
})
.blur(function() {
window_focus = false;
});
$(document).one('click',function() {
setInterval(function() { $('body').append('has focus? ' + window_focus + '<br>'); }, 1000);
});
答案 1 :(得分:0)
试试这个。
var handeler;
function ShowAnimation()
{
//SetInterval code
handeler = SetInterval(myfunction, 1000);
}
//clear the handler when not in use.
function Clearhandler()
{
ClearTimeout(handeler);
}
//call the above method on the onblur event of window.
$(window).focus(ShowAnimation(),Clearhandler());
答案 2 :(得分:0)
与Getu.ch的答案非常相似,但是如果窗口有焦点(每3秒运行一次),这只会执行你的“工作”代码。没有在所有浏览器中测试,但这里显示的是link,显示了window.focus / window.blur的浏览器兼容性
(function($) {
var windowHasFocus = false;
$(window).focus(function() {
windowHasFocus = true;
});
$(window).blur(function () {
windowHasFocus = false;
});
setInterval(function() {
if(windowHasFocus) {
//Do your work
}
}, 3000);
});