2011-10-12 1 views
1

이미지가 시간 초과로 서로 바뀌는 이미지 슬라이더가 있습니다. 나는 jQuery 함수 setInterval()을 사용하지만, 브라우저 윈도우를 최소화 한 후에 작은 문제가있다.이 함수는 "작동"을 유지하고, 브라우저 윈도우 이미지를 복원하면 윈도우가 최소화 된 후 전체 시간처럼 놀라운 속도로 서로 바꾼다. setInterval () 창을 복원 한 후 작업을 수집하지만 실행합니다.Jquery setInterval on minimum

브라우저에서 setInterval()을 일시 중지하는 방법 창이 최소화 된 상태에서 스왑 이미지를 최소화하거나 유지 하시겠습니까?

+0

http://stackoverflow.com/questions/1060008/is-there-a-way-to-detect-if-a-browser 참조 : 아래의 코드 슬라이드 애니메이션과 2 초 후에 적용 -window-is-not-currently-active 그냥 집중하지 않을 때 잠시 멈추고 다시 초점 맞추기 :) –

답변

4

animate()에 대한 문서는 명시 적으로 언급 :

을 때문에 requestAnimationFrame()의 특성, 당신이 setInterval 또는 setTimeout 루프를 사용하여 결코 큐 애니메이션을해야한다. 에 CPU 리소스를 유지하려면 requestAnimationFrame 을 지원하는 브라우저는 창/탭이 표시되지 않은 경우 애니메이션을 업데이트하지 않습니다. setInterval 또는 setTimeout을 통해 애니메이션 대기열을 계속 입력하는 경우 애니메이션이 일시 중지 된 경우 대기열에있는 모든 애니메이션은 창/탭이 포커스를 다시받을 때 재생을 시작합니다. 이러한 잠재적 인 문제를 방지하려면 루프에서 마지막 애니메이션의 콜백을 사용하거나 요소에 함수를 추가하여 다음 애니메이션을 시작하도록 제한 시간을 설정하십시오.

그래서, 당신은 animate()에 호출 사이에 setTimeout()에 체인 애니메이션 다음 사이클의 콜백에서 setTimeout(), 가능한 경우, 또는 queue() 호출을 호출 할 수 있습니다.

편집 : 의견에서 요청한대로 여기에 간단한 queue() 예가 나와 있습니다.

$("selector").slideUp("slow").queue(function(next) { 
    window.setTimeout(next, 2000); 
}).slideDown("slow"); 
+0

'animate()'을 사용하지 않고 클래스 ".active"와 fadeIn, fadeOut 이미지를 추가 및 제거합니다. . 문제를 어떻게 해결해야합니까? – Yekver

+0

@Yekver, 내 답변을 향상시키기 위해 애니메이션 체인이 반복되는시기와 방법을 확인해야합니다. 관련 코드로 질문을 업데이트 할 수 있습니까? –