我为创建http://sandbox.worldwatchlist.us的网站创建了一个简单的旋转横幅。
一切正常,直到我转到浏览器中的另一个选项卡,然后在几秒钟后又回来了……横幅每隔0.5秒或更短时间旋转一次。
我不知道为什么会这样,特别是因为我在JavaScript中使用了setTimeout
并将其设置为10秒(10000毫秒)。
以下是服务器上banner.js文件中的所有代码。请指出任何可以解决此问题的方法。您可以查看上面的网站,也可以查看我在http://www.youtube.com/watch?v=HWb2uc6KpFM上拍摄的视频屏幕截图。每个浏览器都有我测试过的这个问题。
我到处都在寻找“jquery横幅旋转太快”的答案,除了“使用setTimeout”之外没有其他解决我的问题的答案。
var banner_width = 960;
var default_pos = 0;
var current_pos = 0;
var next_pos;
var speed = 500;
var banner_tot; //number of banners
var current_num = 1; //current banner number
$(function(){
banner_tot = $(".banner_item").length;
$(".banner_slider").css({width:(banner_tot*banner_width)});
setTimeout( "slide()", 10000 );
});
function slide(){
if(current_num==(banner_tot)){
next_pos= 0;
$(".banner_slider").animate({left: next_pos}, speed);
current_num=1;
setTimeout( "slide()", 10000 );
}
else{
next_pos= current_num*(-banner_width);
$(".banner_slider").animate({left: next_pos}, speed);
current_num++;
setTimeout( "slide()", 10000 );
}
}
最佳答案
您所看到的是动画集结。当您在浏览器中切换到其他选项卡时,动画会放入队列中,而当您切换回原始选项卡时,所有动画都将按顺序播放。
看看http://www.learningjquery.com/2009/01/quick-tip-prevent-animation-queue-buildup
想要查询更多的信息。