Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 即使在href重定向之后,如何使用setTimeout循环?_Javascript_Facebook_Settimeout - Fatal编程技术网

Javascript 即使在href重定向之后,如何使用setTimeout循环?

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

我尝试在网页(Facebook)上运行循环方法,如下所示:

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方法更改网站的特定区域。