Jquery 间隔,在其他选项卡中时停止。当return在每个间隔之后播放所有间隔时

Jquery 间隔,在其他选项卡中时停止。当return在每个间隔之后播放所有间隔时,jquery,google-chrome,Jquery,Google Chrome,有点奇怪的标题,但这里是我得到的 我发现这个问题已经被问了好几次了,但是雨篷似乎不适合我 我得到的是一个页脚,它上下弹跳以吸引你的注意,当你将鼠标悬停在它上面时,它会展开,显示一个过滤器 现在它可以在窗口中完美地工作,但当我移动到另一个选项卡并返回到站点时,它会播放所有的反弹 我读过一篇文章,说chrome在另一个选项卡中会减慢时间间隔以提高cpu速度 我现在只在窗口设置为焦点时播放计时器,而在设置为模糊时禁用计时器。 但这并不是百分之百的有效 var $bounceInter = 6000;

有点奇怪的标题,但这里是我得到的

我发现这个问题已经被问了好几次了,但是雨篷似乎不适合我

我得到的是一个页脚,它上下弹跳以吸引你的注意,当你将鼠标悬停在它上面时,它会展开,显示一个过滤器

现在它可以在窗口中完美地工作,但当我移动到另一个选项卡并返回到站点时,它会播放所有的反弹

我读过一篇文章,说chrome在另一个选项卡中会减慢时间间隔以提高cpu速度

我现在只在窗口设置为焦点时播放计时器,而在设置为模糊时禁用计时器。 但这并不是百分之百的有效

var $bounceInter = 6000;

function mycode() {
    if($bounceOn == true) {
            $("#footer").animate({bottom:"+=20px"},150, 'swing').animate({bottom:"-=20px"},150, 'swing').animate({bottom:"+=10px"},100, 'swing').animate({bottom:"-=10px"},100,"swing",function(){$("#footer").data("bouncing", false);});
    }
    clearTimeout($bounceTimer);
  $bounceTimer = setTimeout(mycode, $bounceInter); // repeat myself
}


$(window).focus(function() {
    $bounceTimer = setTimeout(mycode, $bounceInter);
});

$(window).blur(function() {
    clearTimeout($bounceTimer);
});

var $bounceTimer = setTimeout(mycode, $bounceInter);
还有其他可能的修复方法吗

我从另一个人那里得到了弹跳代码,也许问题出在那里?

将该方法合并到代码中。由于您的代码不完整(可能设置为悬停或其他),我将根据您的函数名突出显示通用步骤。我正在删除
$
前缀,因为按照惯例,它用于标记jQuery对象

为了方便起见,我们正在使用规范化API,它使用本机(前缀)
requestAnimationFrame
方法,并在必要时使用polyfill。polyfill由Erik Moller创建,可以找到


这是您的动画,填补了空白:。

谢谢,它很管用!每当展开页脚使其无法反弹时,bounceOn将设置为false。
// Minimum delay between each call
var bounceInter = 6000
  , raf
  , bounceTimer;

function nextAnimationStep() {
    raf = requestAnimationFrame(function() {
        // Code here (eg animation)
        bounceTimer = setTimeout(nextAnimationStep, bounceInter);
    });
}

// Initial step
nextAnimationStep();

// To cancel animation (to restart, just call `nextAnimationStep();` ):
cancelAnimationFrame(raf);
clearTimeout(bounceTimer);