2012-12-17 40 views
0

我想在不使用按鈕加載所有代碼後重新加載我的頁面。如何使用javaScript一次重新加載頁面

我用:location.reload();

的問題是,它反覆重新加載頁面我所有的時間。

+3

爲什麼?聞起來像[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。 –

+0

即使你的頁面加載完成後仍然會重新加載,但它仍然會在一個循環中重新加載..你希望在什麼時候停止*重新加載? –

+2

這是我們真正想知道你想要完成什麼的問題之一,所以我們可以提出一個解決方案。 –

回答

2

您需要在頁面的JavaScript之外存儲某種狀態,以指示是否刷新。一種方法是使用localStorage或cookie,但這些都不會按標籤或每個窗口工作。

+0

更詳細的答案將不勝感激。 –

3

最好的辦法是標記它已被重新加載一次的地方。 如Matt所說,使用cookies或localStorage,如果您需要每個選項卡,您可以更改位置.hash

也許您可以幫助我們瞭解爲什麼要重新加載,可能有其他方法。

7

您的window.reload()在每次頁面重新加載時都會被擊中。做這樣的事情:

if(window.location.href.indexOf('?reloaded') === -1) window.location.href = window.location.href + "?reloaded=true"; 

這假設該網頁沒有使用任何其他的網址參數。

編輯

由於馬特·鮑爾指出,使用本地存儲或餅乾不會限制到一個單一的標籤或窗口,但傑克遜在沙地的評論中指出,我上面給出的解決方案將改變瀏覽器歷史。做一些挖後,我想出了另一個,誠然「哈克」,但看似有效的解決方案:使用window.name,而不是在URL標誌:

if(window.name !== "refreshed") { 
    window.name = "refreshed"; 
    window.location.refresh(); 
} 

如果你想測試這一點,粘貼以下一個HTML文件並將其加載到您的瀏覽器中:

<script> 
window.name = prompt("Window name", window.name); 
</script> 

輸入一個新名稱,然後刷新頁面。您將看到刷新時顯示新名稱。同樣,如果您使用同一個文件打開第二個選項卡,則可以爲該選項卡設置相互獨立的名稱。

+1

不理想。您正在追加該網址。這會影響瀏覽器導航。 –

+0

我同意@Jackson_Sandland。令人高興的是,在我多年的發展過程中,我很少看到一個問題不能像OP所要求的那樣以更好的方式解決。如果你在這裏結束了,也許有一個更好的解決方案(而不是刷新)到你的問題。 – Grinn

+0

@Jackson_Sandland我做了一些挖掘,發現了另一個黑客。我已經更新了我的答案。 – Grinn

相關問題