如果我有以下的javascript代码。
var timeout = setTimeout(function(){
alert('this is executed after 5 seconds');
}, 5000);
localStorage.setItem('timeout_event', timeout);
我已将setTimeout函数的返回值检查为id或其他内容。如果用户刷新页面,我该如何重新运行超时事件?它甚至可能吗?
任何帮助都可以。提前谢谢。
答案 0 :(得分:2)
我已将
setTimeout
函数的返回值检查为id或其他内容。
是的,它是一个数字ID,您可以将其传递给clearTimeout
以取消预定的函数运行。
如果用户刷新页面,我该如何重新运行超时事件?
是的,当页面被卸载时,所有未完成的超时都会中止,因此您需要在新页面上重新启动超时。
甚至可能吗?
是和否。您将无法运行您从最后一页调度的函数 - 它的所有上下文/范围都将丢失 - 您需要在新页面的上下文中创建一个新函数。
但是,如果您想根据页面的超时/间隔执行某些功能,可以使用DOM storage或类似功能执行此操作。您将存储指定函数运行的时间戳,以及是否已运行的标志。这样,您可以检查以下页面是否以及何时需要重新安排该功能。
答案 1 :(得分:1)
如果您希望在刷新页面时执行超时功能,只需在window.onload
var timeout = setTimeout(function(){
alert('this is executed after 5 seconds');
}, 5000);
window.onload = timeout;
这对我来说很好用
如果您希望多次执行,请转到setInterval()
var timeout = setInterval(function(){
alert('this is executed for each second');
}, 1000);
window.onload = timeout;
在您致电clearInterval(timeout);
如果你想要多次超时,那么你应该做这样的事情
var timeout = setTimeout(function(){
alert('this is executed after 1 second');
}, 1000);
var timeout1 = setTimeout(function(){
alert('this is executed after 2 seconds');
}, 2000);
var timeout2 = setTimeout(function(){
alert('this is executed after 3 seconds');
}, 3000);
window.onload = timeout;timeout1;timeout2;
这是因为setTimeout会在刷新页面后立即计算时间,这对我来说很好用
答案 2 :(得分:1)
感谢帮助人员。
我设法找到解决问题的方法。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Testing</title>
<script type="text/javascript">
var timeout_time = 10;
var time_remaining = 0;
if(localStorage.getItem('timeout_time')==null){
run_timeout(timeout_time);
}
else{
run_timeout(localStorage.getItem('timeout_time'))
}
setInterval(function(){
time_remaining = localStorage.getItem('timeout_time');
if(time_remaining > 1 || time_remaining != null){
localStorage.setItem('timeout_time', time_remaining - 1);
}
}, 1000);
function run_timeout(time){
setTimeout(function(){
alert('executed on 10 seconds');
localStorage.removeItem('timeout_time');
}, time * 1000);
localStorage.setItem('timeout_time', time);
}
</script>
</head>
<body>
This is the test page.
</body>
</html>
我希望这对其他人有用。
再次,谢谢大家。