我正在使用setTimeout()在我网站上使用横幅进行“幻灯片放映”的网站上工作。一切正常,我将延迟设置为10秒。只有当我切换窗口/标签并执行其他操作时,才会出现此问题。当我回来时,这个功能运行了很多次我(假设)赶上什么的。问题是,我的屏幕开始一遍又一遍地闪烁,以显示所有横幅淡入和淡出。
关于解决方案的任何想法?我在谷歌浏览器中注意到这一点,我也知道它发生在Firefox中。对IE不确定。
修改
这是我正在处理的片段。遗憾的是,它是一个非常大的脚本的一部分,并连接到一个非常复杂的HTML文件。
我希望你至少可以知道这里发生了什么:
var lval=0;
var nval=1;
setHead = function(data) {
lval=nval;
var index=1;
$.each(data, function(name,value) {
if (Math.floor(Math.random()*index+2)==index+1) {
nval=index;
}
if (index==lval) {
$('.headmaster').find('img').fadeOut('fast');
//$('.headmaster').css('background-color',value.backgroundcolor);
$('.headmaster').find('a').attr('href',value.url);
$('.headmaster').animate({backgroundColor:value.backgroundcolor},'slow',function() {
$('.headmaster').find('img').attr('src',value.img);
$('.headmaster').find('img').fadeIn('slow');
});
}
index++;
});
setTimeout(function() { setHead(data); },10000);
}
arrayGet = function(arr,idx) {
$.each(arr, function(i,v) {
if (i==idx) {
return v
}
});
return null
}
$(document).ready(function() {
$.getJSON('json/intros.json', setHead);
});
我正在使用jQuery作为动画,使用颜色插件来淡化颜色。
答案 0 :(得分:3)
这可能是因为您使用的是旧版本的jQuery。即开发团队已开始使用requestAnimationFrame
API的那个。幸运的是,他们将其修复为1.6.3。以下是blog:
不再有动画“虫洞”:当我们在版本中添加支持时,我们对浏览器的
requestAnimationFrame
API寄予厚望 1.6。但是,自那时以来我们收到的投诉数量最多的投诉之一与requestAnimationFrame
在标签时的行为方式有关 不可见。选项卡不可见时启动的所有动画 “堆栈”并且在选项卡重新聚焦之前不会执行。 然后他们都以翘曲的速度制作动画!我们已经删除了对此的支持 API(对你调用jQuery动画的方式没有影响 功能)并计划将其合并到未来版本的jQuery中。
只需更新为1.6.4。