防止Javascript页面重新加载

时间:2016-11-03 21:39:14

标签: javascript jquery settimeout page-refresh

我使用此javascript每30秒自动刷新一次页面。

<md-menu id="user-status-menu" md-position-mode="{{vm.position}}" md-offset="{{vm.offset}}">

我需要在重新加载页面之前随时向用户提供禁用此功能的选项。

注意:这适用于管理面板,而不是公共网站,客户端的要求是页面自动刷新,并可选择通过单击按钮在刷新之前停止刷新。

有没有办法实现这个...那就是..在执行之前禁用javascript?

4 个答案:

答案 0 :(得分:8)

  

clearTimeout():通过调用setTimeout()取消之前建立的超时。

您正在搜索 clearTimeout()

var refresh = window.setTimeout(function(){ document.location.reload(true); }, 30000);

$('body').on('click', '#my-button', function(){
    clearTimeout(refresh);
})

希望这有帮助。

答案 1 :(得分:3)

执行以下操作:

reload = window.setTimeout(function(){ document.location.reload(true); }, 30000);

或者,如果使用jQuery,

$("#non-reload-button").click(function(){
  clearTimeOut(reload)
});

答案 2 :(得分:3)

这样做:

var myVar;

function myFunction() {
    myVar = window.setTimeout(function(){ document.location.reload(true); }, 30000);
}

function myStopFunction() {
    clearTimeout(myVar);
}

您只需调用myStopFunction即可停止自动重新加载。

答案 3 :(得分:2)

下面是每隔500毫秒继续执行的代码,直到您单击按钮停止它为止。只需将500替换为您想要的时间,并将console.log替换为您希望运行的操作。希望这有帮助!

let auto_refresh_active = true;

const refresh = () => {
   window.setTimeout(e => {
     console.log('Hey, I am running! Click the button to stop me!')
     if(auto_refresh_active == true) refresh();
  }, 500) 
}
refresh();

document.querySelector('button').addEventListener('click', e => auto_refresh_active = false);
<button>stop running</button>