2015-11-19 91 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 
} 

不過說到底,這是不是一個好的做法。你爲什麼重新加載頁面?你可能可以完成你想要的而不用頁面重新加載。

相關問題