2011-10-06 2 views
2

나는 내 사이트의 배너로 '슬라이드 쇼'를하기 위해 setTimeout()을 사용하는 사이트에서 일하고 있습니다. 모든 것이 잘 작동하고 지연 시간을 10 초로 설정했습니다. 이 문제는 창/탭을 전환하고 다른 작업을 수행 할 때만 발생합니다. 내가 돌아 왔을 때,이 기능은 내가 따라 잡기 위해 내가 번갈아 가며 돌린다. 문제는 내 화면이 반복적으로 깜박 거리고 모든 배너가 희미 해져서 사라지는 현상입니다.setTimeout()에는 해당 창에 포커스가 있지 않을 때 문제가 있습니까?

솔루션에 대한 아이디어가 있습니까? Google 크롬에서이 사실을 발견했습니다. 또한 Firefox에서 발생하는 것으로 알고 있습니다. IE에 대한 확신이 없습니다.

편집 여기

내가 다루고있어 조각입니다. 슬프게도 매우 큰 스크립트의 일부이며 매우 복잡한 HTML 파일에 연결되어 있습니다.

나는 당신이 여기 적어도 무슨 일이 일어나고 있는지의 아이디어를 얻을 수 있기를 바랍니다 : 나는 애니메이션과 색상을 변색의 색상 플러그인 jQuery를 사용하고

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); 
}); 

.

+0

당신은 settimeout 함수에 몇개의 호출이 일어나고 있는지 확인하기 위해 방화 녀를 확인 했습니까? 정상적인 상황과 탭/창을 변경 한 후이를 확인하십시오. 함수 호출에 이상이 있는지 확인하십시오. – AdrianoRR

+0

@AdrianoRR 나는 이미 확신했다. 탭이 되돌아 오자 마자 함수는'timegone/timeoutlength' 번 호출됩니다. – FreeSnow

+1

자, 코드를 사용한 스 니펫이나 함수를 사용한 예제를 제공해 주시겠습니까? 문제를 쉽게 식별 할 수 있습니다. – AdrianoRR

답변

3

이전 버전의 jQuery를 사용하고있을 가능성이 높습니다. 즉, dev 팀이 requestAnimationFrame API를 사용하기 시작한 곳입니다. 다행히 1.6.3에서 수정했습니다.

더 이상 애니메이션 "벌레 구멍": 우리가 버전 1.6에 지원을 추가 할 때 우리는 브라우저의 requestAnimationFrame API에 대한 높은 기대를 가지고 여기에 자신의 blog 추출물이다. 그러나 그 이후로받은 가장 큰 불만 중 하나는 이 보이지 않을 때 requestAnimationFrame이 작동하는 방식과 관련이 있습니다. 모든 애니메이션은 탭이 보이지 않을 때 시작됩니다. "스택"이며 탭에 포커스가 다시 주어질 때까지 실행되지 않습니다. 그런 다음 그들은 모두 워프 속도로 움직입니다! 이 API (jQuery의 애니메이션 인 기능에 영향을주지 않음)에 대한 지원을 제거하고 향후 jQuery 버전에 통합 할 계획입니다.

1.6.4으로 간단하게 업데이트하십시오.

+0

오 완벽한! 테스트를 위해 로컬 파일 시스템에서 이전 복사본을 참조하고 있다는 것을 알게되었습니다. 완벽한;) – FreeSnow

관련 문제