Наложение jQuery .fadeIn () (после просмотра другой вкладки браузера)

0

Я написал сценарий для отображения чисел на фоне, которые исчезают и исчезают. (какая-то матричная тема)

все работает нормально, пока я не покину страницу, чтобы увидеть любую другую вкладку браузера. Когда я вернусь к вкладке с моим скриптом, числа (которые исчезают и исчезают) накладываются/перекрываются. Насколько я понимаю, 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);
})
Теги:

1 ответ

1
Лучший ответ

Ну, вам не нужно объявлять свою функцию 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);
        });
    });    
} 
  • 0
    позвольте мне попробовать это :)
  • 0
    не повезло. Я заставил его работать быстрее, и теперь вы определенно можете видеть, как он работает. jsfiddle.net/A1ex5andr/9MFyz/3
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню