Я написал сценарий для отображения чисел на фоне, которые исчезают и исчезают. (какая-то матричная тема)
все работает нормально, пока я не покину страницу, чтобы увидеть любую другую вкладку браузера. Когда я вернусь к вкладке с моим скриптом, числа (которые исчезают и исчезают) накладываются/перекрываются. Насколько я понимаю, setInterval() начинает сбивать мои временные интервалы функции functionGhost() в течение периода времени, когда эта вкладка неактивна.
Есть ли способ синхронизировать функцию setInterval() и codeGhost(), чтобы не иметь этих проблем, если пользователь возвращается с другой вкладки браузера обратно на страницу с моим скриптом?
С наилучшими пожеланиями.
var codeElement = 1;
function randomIntNum(){
codeElement = Math.floor(Math.random()*10);
}
function getRandomInt(min, max){
return Math.floor(Math.random() * (max - min + 1)) + min;
}
$(document).ready(function(){
function codeGhost(){
$("#codeGhost").css({
'top' : getRandomInt(0,400),
'left': getRandomInt(0,900)
});
randomIntNum();
$('#codeGhost').html(codeElement);
$('#codeGhost').fadeIn( 2000, function(){ $('#codeGhost').fadeOut( 2000) });
}
setInterval(codeGhost, 4000);
})
Ну, вам не нужно объявлять свою функцию codeGhost() внутри вашего обработчика документа - только ваш setInterval - чтобы вы могли перемещать это вне функции, это, вероятно, хорошая практика.
Ваша скрипка, похоже, работает нормально, но, возможно, вы столкнетесь с несколькими тайм-аутами. я бы поменял
setInterval(codeGhost, 4000);
для
setTimeout(codeGhost, 4000);
а затем вызывать следующий тайм-аут из вашей функции codeGhost() каждый раз, когда он запускается:
function codeGhost(){
$("#codeGhost").css({
'top' : getRandomInt(0,400),
'left': getRandomInt(0,900)
});
randomIntNum();
$('#codeGhost').html(codeElement);
$('#codeGhost').fadeIn(2000, function(){
$('#codeGhost').fadeOut(2000, function() {
setTimeout(codeGhost, 4000);
});
});
}