防止 JavaScript 页面重新加载

5

我正在使用这段JavaScript代码来实现页面每30秒自动刷新。

<script type="text/javascript">
    window.setTimeout(function(){ document.location.reload(true); }, 30000);
</script>

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

注意:这是针对管理员面板而非公共网站,并且客户的要求是页面自动刷新,但可以通过点击按钮在刷新前停止刷新。

是否有办法实现这一点...也就是在执行javascript之前禁用它?

4个回答

8

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

您正在寻找 clearTimeout()

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

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

希望这能帮到您。

1
好的回答! :) - Tom el Safadi

3

请执行以下操作:

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

或者,如果使用jQuery:

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

3
这样做:

按照以下方式:

var myVar;

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

function myStopFunction() {
    clearTimeout(myVar);
}

只需调用myStopFunction函数即可停止自动重载。

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>


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接