2012-05-21 12 views
0

好吧,即時通訊真的卡住了我一直在這一整天工作,我只是不能把它父親出來。獲取圍繞鉻和FF背景標籤處理錯誤的JavaScript

我有一個使用setTimeout()的javascript幻燈片。我明白,在Chrome和一些FF版本中,它會減速以減少CPU使用量,然後加快趕上它認爲它應該在幻燈片放映時的位置,當我回到它。

然而,在這樣做的過程中,它不僅加快速度,而且忽略了我的代碼中跳出映像數組的一些問題,導致一個簡短的未定義錯誤。這只是驚人的一旦它趕上它然後運行良好?即時通訊堅持任何想法如何我可以得到這一點,以及如何阻止它加速呢?這是我使用的代碼。

<script type="text/javascript"> 
<?php 
$fetch_images = mysql_query($Aquery); 
$fetch_title = mysql_query($Bquery); 
$fetch_text = mysql_query($Cquery); 
$num_rows = mysql_num_rows($fetch_images); 
?> 
var i=0; 
var products = [<?php while($image = mysql_fetch_array($fetch_images)){echo "'".$image['imageurl']."',";}?>]; 
var productstitle = [<?php while($title = mysql_fetch_array($fetch_title)){echo "'".$title['title']."',";}?>]; 
var productstext = [<?php while($text = mysql_fetch_array($fetch_text)){echo "'".stripslashes($text['strapline'])."',";}?>]; 
function slideShow<?php echo $timerTag;?>(){ 
    if (i<=(products.length-1)){ 
     $('#headerslideimage').fadeTo("slow", 0, function() { 
     <?php if(page('pageurl') != 'home'){?> 
      document.getElementById('headerslidetitle').innerHTML=productstitle[i]; 
      document.getElementById('headerslidetext').innerHTML=productstext[i]; 
     <?php }?> 
     document.getElementById('headerslideright').innerHTML="<img id='headerslideimage' src='"+products[i]+"' alt='"+productstitle[i]+"'/>"; 
     i++; 
     $('#headerslideimage').fadeTo(4000, 100, function() {}); 
    }); 
} else { 
    i = 0; 
    $('#headerslideimage').fadeTo("slow", 0, function() { 
    <?php if(page('pageurl') != 'home'){?> 
    document.getElementById('headerslidetitle').innerHTML=productstitle[i]; 
    document.getElementById('headerslidetext').innerHTML=productstext[i]; 
    <?php }?> 
    document.getElementById('headerslideright').innerHTML="<img id='headerslideimage' src='"+products[i]+"' alt='"+productstitle[i]+"'/>"; 
    i++; 
    $('#headerslideimage').fadeTo(4000, 100, function() {}); 
}); 
} 
setTimeout("slideShow<?php echo $timerTag;?>()", 5000); 
} 

回答

0

是你的動畫功能最終調用​​一個? setInterval & setTimeout當您最小化或切換選項卡時不會停止運行,但​​會執行此操作。結果是,如果您從間隔(或鏈接超時)任務中調用​​,則當標籤重新聚焦時,您將不斷排隊新增​​的任務以快速播放。

退房此相關的問題:Jquery setInterval on minimize

0

使用Page Visibility API你的函數中,以檢查是否頁是當前可見。如果它不跳過執行任何迭代。當他們沒有與你的頁面進行交互時,這會有更多的用戶使用資源。