2015-11-19 90 views
3

我目前正在编写一个JavaScript程序,我想刷新一个网页,然后继续调用一个函数,修改后来新刷新的页面。但是,无论何时调用location.reload(),页面都会在刷新之前执行操作,尽管事实上我已经将它们放在代码中的刷新之后。如何让页面在刷新后形成动作?如何刷新页面,然后继续执行操作?

+2

您必须将该代码放在*新页面*中。 'location.reload()'会影响新页面后,旧页面没有任何操作。这就是它的工作原理。 – Pointy

+0

你能否给我们提供一些示例代码,并给我们一些你想要完成的内容的背景? –

+0

'location.reload()'是非阻塞的,因此它在完成重新加载之前被执行 –

回答

1

页面重新加载后Javascript不会继续执行,它会重新开始。

如果你真的需要刷新页面然后开始一个特定的动作,你必须有一些方法来告诉你的代码从停止的地方开始。

解决此问题的一种方法是向网址添加哈希值,该哈希值将用作继续执行的标志。

window.location.href += "#continueScript"; 
location.reload(); 

然后在你的函数中检查散列。

if(window.location.hash == "#continueScript") { 
    continueMyScript(); 
}; 
3

你可以欺骗做到这一点使用的sessionStorage:

//in some function: 
sessionStorage.setItem('onReload', 'doFn1'); 
location.reload(); 
//elsewhere, to be called on page load: 
if(sessionStorage.getItem('onReload') === 'doFn1') { 
    sessionStorage.setItem('onReload', ''); 
     // do your code 
} 

不过说到底,这是不是一个好的做法。你为什么重新加载页面?你可能可以完成你想要的而不用页面重新加载。

相关问题