일부 이미지가 페이드 인/아웃되는 간단한 스크립트가 있습니다. 다른 탭으로 전환 한 다음 다시 전환하기 전에 완벽하게 작동합니다. 다시 전환 한 후 애니메이션이 실행되는 간격이 지워지지 않고 animateFading
기능이 계속 실행되는 것처럼 보입니다.JavaScript - 브라우저 탭 간격 전환 문제
왜 탭 전환이 스크립트에 어떤 영향을 미칩니 까? 어떻게 제대로 작동하게 할 수 있을까요? 고마워!
진짜 코드 :
var img0 = document.getElementById("image0");
var img1 = document.getElementById("image1");
var img2 = document.getElementById("image2");
var imgs = [img0,img1,img2];
var intervalFading;
var intervalAnimate;
var imgThis = 0;
var imgNext = 1;
var fadeIn = 0;
var fadeOut = 1;
var start;
function animateFading() {
fadeIn+=0.1;
fadeOut-=0.1;
imgs[imgThis].style.opacity = fadeOut;
imgs[imgNext].style.opacity = fadeIn;
if (fadeIn >= 1) {
clearInterval(intervalAnimate);
if (imgNext < 2) {
imgNext++;
} else {
imgNext = 0;
}
if (imgThis < 2) {
imgThis++;
} else {
imgThis = 0;
}
fadeIn = 0;
fadeOut = 1;
}
}
function fading() {
intervalAnimate = setInterval(animateFading,50);
}
function startFading() {
start = setInterval(fading, 3000);
}
window.addEventListener('load', startFading);
솔루션 :
var startedFading = false;
function startFading() {
if (!startedFading) {
startedFading = true;
startFading = setInterval(fading, 5000);
}
}
function stopFading() {
startedFading = false;
clearInterval(startFading);
}
window.addEventListener('focus', startFading);
window.addEventListener('blur', stopFading);
가 두 번
window.addEventListener('focus', startFading);
&
01 화재로 부울은 크롬입니다window.addEventListener('blur', stopFading);
setTimeout을 호출하는 재귀 함수를 사용하여 setInterval을 사용하여이를 해결하는 경향이 – charlietfl