2012-04-17 83 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; 
}