当用户返回上一页时,是否可以调用函数?

时间:2019-06-24 07:29:47

标签: javascript ruby-on-rails

所以我正在使用Ruby on Rails创建一个网站,并且页面上有一个计时器。 计时器从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 :(得分:0)

尝试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

答案 1 :(得分:0)

铁路用户涡轮链接加载页面。 我建议使用jquery-rails 尝试使用

$(document).on("turbolinks:before-cache", function() {
 clearInterval(gameTimer);
});