2012-04-17 84 views
1

我有一個小問題,在iframe中有絕對定位元素。Iframe和絕對定位元素

所以我有一個頁面,在頁面上我有一個小遊戲iframe。在比賽中是一個人,這個人有絕對定位的學生。學生們正在通過JavaScript移動。 一切工作正常,但如果我打開該頁面,並繼續瀏覽其他頁面在不同的選項卡中,我回來後,學生在以前的其他地方(完全ut形式的眼睛。)

還有更多元素絕對定位在該iframe中,並且沒有任何問題,我想這是因爲Javascript動畫。有人遇到過類似的問題嗎?很抱歉,但由於許多原因,我無法在此發佈頁面。

我可以爲學生動畫後腳本:

function eyes_sides(){ 
    $('.eyes').animate({ 
      left:parseInt($('.eyes').css('left'))-9 
     },{duration:1500}); 
    $('.eyes').animate({ 
      left:parseInt($('.eyes').css('left')) 
     },{duration:1000}); 
} 

function eyes_roll(){ 
    $('.eyes').animate({ 
     left:parseInt($('.eyes').css('left'))-7, 
     top:parseInt($('.eyes').css('top'))-18 
     },{duration:1800}); 
    $('.eyes').animate({ 
     left:parseInt($('.eyes').css('left')), 
     top:parseInt($('.eyes').css('top')) 
     },{duration:1300}); 
    } 

function animate_eyes(){ 
     var animation = random_number(1,2); 
     //alert(animation); 
     switch(animation){ 
     case 1: 
      eyes_roll(); 
      break; 
     case 2: 
      eyes_sides(); 
      break; 
     } 
     var delay = random_number(4000,12000);   
     window.animateEyes = setTimeout(function(){animate_eyes()},delay); 
    } 

腳本是不完美的,但做什麼要求。

我在想什麼可能會導致這個問題,也許它以某種方式連接到該選項卡未激活時運行的動畫?也許增加「onBlur」和「onFocus」來停止/啓動動畫會有幫助嗎?

謝謝指教!

+0

我想你會需要'onBlur()'。檢查這個答案:http://stackoverflow.com/questions/6112671/settimeout-speeds-up-with-multiple-tabs – Teemu 2012-04-17 07:42:58

+0

好吧,所以我已經嘗試從其他問題的修復,和一些模糊和重點,但沒有幫助。我猜onblur和focus對iframe沒有太大的影響。任何其他想法? – Tom 2012-04-17 08:38:25

+0

它不會關注焦點和模糊。嘗試創建一個div作爲iframe的背景。 – 2012-04-17 08:56:11

回答

0

此代碼應該停止動畫。至少它會在IFRAME上觸發onblur。你會很容易知道,如何再次啓動動畫。

我不熟悉jQuery,但可以「翻譯」代碼。

window.onload=function(){ 
    var ifr=document.getElementById('your_iframe'); 
    (function (x){x.onblur=function(){clearTimeout(x.contentWindow.animatedEyes);return;}}(ifr)); 
    return; 
}