如何在同一浏览器窗口中的location.reload()之后运行javascript函数

时间:2016-11-30 18:15:35

标签: javascript jquery

我的功能很简单;

    setTimeout(function(){ alert('hello');  
         //Business stuffs..
         location.reload();
         eval(localStorage.getItem('mysc'))},5000)

在浏览器(chrome或firefox)中打开后我输入;

localStorage.setItem("mysc","setTimeout(function(){ 
    //Business stuffs...
    location.reload();
    eval(localStorage.getItem('mysc'))
    },5000)");

之后我输入;

eval(localStorage.getItem('mysc'))

我希望此功能永远在同一浏览器窗口中执行..或者直到关闭浏览器.. 但是你猜,它只能工作一次。 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

您应该在页面加载时创建计时器 ,然后在回调中重新加载页面。页面重新加载时,将重新创建计时器。这将“递归地”每5秒重新加载一次页面。

<html>
  <head>
    <script type="text/javascript">
      console.log('page loaded, waiting...');
      setTimeout(function () {
        console.log('reloading');
        location.reload();
      }, 5000);
    </script>
  </head>
</html>

据我所知,如果您不控制要重新加载的页面(即使用Dev Tools或控制台API),则无法实现此目的。在下一页加载时附加脚本以执行是不可能的,并且在当前页面卸载时清除所有活动的定时器。浏览器扩展可能是要走的路;例如,Content Scripts可用于在Chrome中实现此功能。