Javascript 即使在href重定向之后,如何使用setTimeout循环?
我尝试在网页(Facebook)上运行循环方法,如下所示:Javascript 即使在href重定向之后,如何使用setTimeout循环?,javascript,facebook,settimeout,Javascript,Facebook,Settimeout,我尝试在网页(Facebook)上运行循环方法,如下所示: function loopRefresh () { console.log("loop refresh method call"); if (shallRefresh){ setTimeout(function(){ loopRefresh() //Do something here }, 5000); } else { setTimeout(functio
function loopRefresh () {
console.log("loop refresh method call");
if (shallRefresh){
setTimeout(function(){
loopRefresh()
//Do something here
}, 5000);
} else {
setTimeout(function(){
loopRefresh()
//Do something different here
}, 5000);
}
}
到目前为止,一切正常,该方法每5秒调用一次。问题在于,当用户单击“主页”按钮时:
由于锚定标记和href,页面被重新加载,即使它没有引用新页面。
这打破了循环
我已经将此函数作为onclick事件添加到Home按钮:
function homeRefresh() {
shallRefresh = true;
//setTimeout(function(){
// Do the same thing here as in the true case in the loopRefresh method
// }, 2000);
}
我最初只想在这里进行setTimeout调用,以便在用户单击按钮后执行回调函数,而不使用loopRefresh方法。但是我想我可以通过传递变量来解决这个问题,但这个变量也不起作用。在函数启动时使用event.preventDefault()。像
function homeRefresh() {
event.preventDefault(); // here..
shallRefresh = true;
//setTimeout(function(){
// Do the same thing here as in the true case in the loopRefresh method
// }, 2000);
}
event.preventDefault()将阻止超链接的默认操作
注意:重新加载页面后,无法继续使用javascript函数
根据该屏幕截图,您正在引用一个完全限定的url。当用户单击时,它将刷新页面…好的,那么有没有类似于“onrefresh”的事件,我可以在刷新后使用它触发函数调用?非常感谢!那么在那之后执行函数的方法是,是吗?这是唯一的办法?基本上是不可能的。重新加载页面时,其整个资产文件也会重新加载。javascript也是如此。当页面被导航到别处时,浏览器将停止一切(每个正在运行的函数、循环、观察者等)。但没有什么是不可能的。您可以在重新加载页面之前设置唯一的本地存储变量,并在重新加载之后交叉验证它。在页面加载之后将执行onload。不重新加载。好的,谢谢您提供的关于唯一本地存储变量的输入,我们将对此进行研究。但我认为页面没有完全重新加载。我通过Firefox的插件加载代码,当我用ctrl+r刷新页面时,我的代码被重新加载,loopRefresh函数再次运行。如果我点击按钮,它不是。必须有两种不同的重新加载,哈哈。我想你说的是ajax重新加载。可以使用ajax方法更改网站的特定区域。