@antanol

Почему один и тот же код не работает при запуске, но работает после .onblur?

Программа "мерцает" изображениями молний одна картинка - раз в три секунды, вторая - раз в пять и третья - раз в семь через setInterval. При переходе на другую вкладку срабатывает clearInterval, при возвращении на вкладку setInterval опять включается.

Проблема в том, что первая функция, запускаемая через setInterval (интервал 3с), по какой-то причине запускается только ОДИН раз - через три секунды после запуска страницы, и больше нет. Если перейти на другую вкладку и вернутся - ОНА РАБОТАЕТ ИНТЕРВАЛАМИ так, как и должна.
При чём в том же коде есть ещё две абсолютно аналогичные функции с интервалами 5 и 7 секунд, они работают нормально.

Я просто не понимаю, что здесь не так :(
Какая-то очевидная опечатка или что-о? х_х
function lightingOne(){
    $("#lightning1").fadeIn(250).fadeOut(250);
    console.log("Я есть, просто прячусь"); //сперва я правда думала, что интервал работает и проблема в картинке, ага
}
function lightingTwo(){ //функция, работающая нормально и до, и после перехода на другую вкладку
    $("#lightning2").fadeIn(250).fadeOut(250);
    console.log("А меня видно"); 
}
function lightingThree(){ //функция, работающая нормально и до, и после перехода на другую вкладку
    $("#lightning3").fadeIn(250).fadeOut(250);
}

$(document).ready(function(){
    var goL1, goL2, goL3;

    function letBeLight(){
        goL1 = setInterval(function(){
            lightingOne();
        }, 3000);
        goL2 = setInterval(function(){
            lightingTwo();
        }, 5000);
        goL3 = setInterval(function(){
            lightingThree();
        }, 7000);
    };
    
    function giveMeDark(){
        window.clearInterval(goL1);
        window.clearInterval(goL2);
        window.clearInterval(goL3);
    };
    
    letBeLight();
    window.onfocus = letBeLight;
    window.onblur = giveMeDark;
}


*Айдишник ведёт к изображениям, которые "мерцают" (открываются и закрываются в теч. полусекунды).
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 1
@vaajnur
битриксоид
Метод window.focus позволяет сфокусироваться на окне. Он работает по-разному в разных ОС и браузерах. У меня отрабатывает так
1
2
1
3
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы