나는 을 가지고 있는데, 이는 setTimeout
및 setInterval
의 여러 인스턴스를 사용합니다. 사용자가 페이지를 떠날 경우 setInterval
에 문제가 있음을 발견했습니다.사용자가 창을 닫을 때 setInterval이 지워지지 않음
이 간격이 실행되는 동안 페이지를 나가면 숫자가 계속 증가합니다. 간격은 기본적으로 지워지지 않습니다. 그렇지 않으면 잘 작동합니다.
다음은 내에있는 setInterval
의 인스턴스 중 하나의 예입니다.
setTimeout(function() {
var x = parseInt($one.text());
handle = setInterval(function() {
if (x > -5) {
x--;
$one.html(x + 'px');
}
else {
clearInterval(handle);
handle = null;
}
}, 200);
$box.animate({
boxShadow: '-5px 0 0 0 #333'
}, 2000);
}, 7000);
내가 모두 clearInterval(handle)
및 handle = null
를 추가하려고했습니다 내/else 문 경우,하지만 난 단순히 사용자가 페이지를 떠나면 간격이 취소 얻을 수 없습니다. 내가 접근 할 수있는 다른 방법이 setInterval
일까요? 이것은 자바 스크립트의 제한 사항입니까? 나는 x
값을 로그인 할 때
이상하게
업데이트은 콘솔이 제대로 -1을 통해 -4 숫자를 표시 보여줍니다. clearInterval
이 다른 창에서 실행되지 않습니까?
모습을 브라우저 탭 타이머를 처리하는 방법. iirc 그들은 결코 멈추지 않습니다. – rlemon
@rlemon 당신 말이 맞아요. "탭이 비활성 상태 일 때 초당 최대 1 회만 함수가 호출됩니다." [이 질문] (http://stackoverflow.com/questions/6032429/chrome-timeouts-interval-suspended-in-background-tabs). 흥미로운 –
참고 사항 : 탭을 벗어날 때 requestAnimationFrame이 완전히 중지됩니다. 나는이 문제와 관련이 없다는 것을 알지만, 알아두면 좋다 : P – rlemon