我正在使用setTimeout()在我的網站上用橫幅做一種「幻燈片放映」。一切工作正常,我有延遲設置爲10秒。只有當我切換窗口/選項卡並執行其他操作時纔會出現此問題。當我回來時,這個函數運行了很多次(我假設)趕上了什麼。問題是,我的屏幕一遍又一遍閃爍,顯示所有橫幅淡入淡出。當窗口沒有關注時,setTimeout()是否有問題?
解決方案的任何想法?我在Google Chrome中注意到了這一點,我也知道它發生在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的動畫和褪色的顏色顏色插件。
您是否檢查過螢火蟲,以查看您的setTimeout函數正在發生多少個調用?嘗試檢查一下正常情況,並在您更改標籤/窗口後。看看你的函數調用是否有異常。 – AdrianoRR
@AdrianoRR我已經確定了。一旦標籤切換回來,該函數被稱爲'timegone/timeoutlength'次。 – FreeSnow
好的,你能提供我們的代碼片段或使用你的功能一些例子嗎?識別你的問題會更容易。 – AdrianoRR