Jquery简单滑块问题时,浏览器选项卡不活动

Jquery simple slider problem when browser tab not active

本文关键字:浏览器 选项 不活动 简单 问题 Jquery      更新时间:2023-09-26

我用setInterval()

写了一个简单的jquery滑块,它基本上有3个div,隐藏一个,然后淡出下一个等等

滑块对我的目的来说工作得很好,但是当我打开其他选项卡,然后回到页面的选项卡时,所有的div都是可见的,然后它们开始消失,它又开始工作。

这是我的jquery,这是在$(function(){}):

    $('#slideshow-next').click(function() {
    pauseSlideshow();
    nextSlide();
});
$('#slideshow-prev').click(function() {
    pauseSlideshow();
    prevSlide();
});
$('#slideshow-pause').click(function(){
    pauseSlideshow();
});
$('#slideshow-play').click(function() {
    playSlideshow();
});
interval = setInterval('nextSlide()', 4000);
});
function playSlideshow() {
    interval = setInterval('nextSlide()', 4000);
    $('#slideshow-play').hide();
    $('#slideshow-pause').show();
    nextSlide();    
}
function pauseSlideshow() {
    interval = clearInterval(interval);
    $('#slideshow-pause').hide();
    $('#slideshow-play').show();
}
function nextSlide() {
    //hide current slide
    $('#slide'+currentSlide).hide();
    // show next slide
    var next = (currentSlide+1)%3;
    $('#slide'+next).fadeIn('slow');
    currentSlide = next;        
}
function prevSlide() {
    //hide current slide
    $('#slide'+currentSlide).hide();
    // show next slide
    var next = (currentSlide-1)%3;
    $('#slide'+next).fadeIn();
    currentSlide = next;
}

我认为你可能会击中一个不同的情况下问Chrome:超时/间隔暂停在背景标签?,其中声明:

当选项卡处于非活动状态时,该函数每秒最多只被调用一次。

所以你可以编码setInterval不同,我怎么能使setInterval也工作时,标签是不活动的Chrome?或者检测标签开关以停止幻灯片并重新开始标签focus如何判断浏览器/标签是否处于活动状态

同时,Jquery setInterval太快当来自另一个选项卡时可能是有用的,因为它声明

Firefox 5+还限制非活动选项卡每秒一次超时。