Есть ли способ вызвать функцию, когда пользователь возвращается на предыдущую страницу? - PullRequest
0 голосов
/ 24 июня 2019

Итак, я создаю сайт, используя Ruby на рельсах, и у меня есть таймер на странице. Таймер идет от 5 до 0, а затем начинается игра. Однако, если вы вернетесь на предыдущую страницу до того, как таймер закончится, а затем снова запустите таймер, оба таймера будут существовать, и таймер уменьшится вдвое быстрее.

Так что мне нужно уничтожить мой таймер при возвращении на предыдущую страницу, но использование события unload не работает, потому что страница не выгружается при возврате на предыдущую страницу. Есть ли событие «возврат» или что-то подобное, что я мог бы использовать?

Вот мой таймер:

var timeleft = 6;
var gameTimer = setInterval(function(){
    timeleft--;
    afficherChaine("Le jeu va commencer dans " + timeleft + " secondes !"); //afficherChaine just prints something for the user 
    if(timeleft <= 0){
        clearInterval(gameTimer);
        jouer();
    }
},1000);

Я пробовал это, но это не работает:

window.onpopstate = function(event){
    clearInterval(gameTimer);
}

РЕДАКТИРОВАТЬ: Я пытался сделать gameTimerID = null; на всякий случай, но это ничего не меняет. Похоже, таймер просто не исчезнет. Я делаю это неправильно?

Ответы [ 2 ]

0 голосов
/ 24 июня 2019

Rail пользовательские turbolinks для загрузки страниц. Я рекомендую использовать jquery-rails попробуйте использовать

$(document).on("turbolinks:before-cache", function() {
 clearInterval(gameTimer);
});
0 голосов
/ 24 июня 2019

Попробуйте onpopstate. Как указано A popstate event is dispatched to the window each time the active history entry changes between two history entries for the same document. https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onpopstate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...