Я работаю над сайтом, который использует setTimeout () для создания своего рода «слайд-шоу» с баннерами на моем сайте. Все отлично работает, у меня задержка установлена на 10 секунд. Проблема возникает только когда я переключаю окна / вкладки и делаю что-то еще. Когда я возвращаюсь, функция запускается кучу раз, которые я (предполагаю) догоняю или что-то в этом роде. Проблема в том, что мой экран начинает мерцать снова и снова, показывая все исчезающие и исчезающие баннеры.
Есть идеи по решению? Я заметил это в Google Chrome, я также знаю, что это происходит в Firefox. Не уверен насчет IE.
EDIT
Вот фрагмент, с которым я имею дело. К сожалению, он является частью очень большого скрипта и связан с очень сложным 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 для анимации и плагин цвета для выцветания цветов.