2011-10-03 154 views
3

我想弄清楚如何使用javascript在Safari(5.1)中刷新頁面,但似乎沒有任何工作。在Safari中刷新javascript頁面

到目前爲止,我已經盡力了,

  • window.location.href = window.location.href
  • 了window.location = window.location.href
  • window.location.reload(真)
  • window.location.replace(window.location.href)

什麼是在Safari處理頁面刷新的正確方法嗎?

+0

他們都在爲我工作。我是5.0 Windows – Mohsen

+0

你知道如何在Safari中打開開發者工具嗎? – Mohsen

+0

嘗試document.location.reload(true) – lionheart

回答

3
location.reload(true); // works for safari 

如果你還不知道這個網站,讓有它一看,你將有很多例子用於刷新頁面:http://www.quackit.com/javascript/javascript_refresh_page.cfm

+0

這對我來說並不適用,在這種情況下頁面是來自POST的響應。 – andrewb

+1

對於一個POST你期望什麼?如果刷新POST頁面,則會更棘手。 –

+0

是的,它更棘手,但似乎是Safari的一個例外 - 其餘瀏覽器支持基於JS的POST請求刷新。 – andrewb

1

你應該總是使用reload()方法從location對象...

window.location.reload(); 

設置的第一個參數爲true,如果你想硬盤重裝(發送該網頁的新GET請求)。

+0

在頁面是來自POST的響應的情況下,這對我無效。 – andrewb

+0

你不應該從POST提交響應,你應該使用[Post/Redirect/Get](http://en.wikipedia.org/wiki/Post/Redirect/Get)。否則,當用戶嘗試重新加載或導航回此頁面時,您將遇到同樣的問題。 – alex

+0

當然,在這種情況下,它應該只是一個GET查詢字符串。但是現在不能重新設計,而且它的確行得通 - 刷新,導航回來,甚至是除了Safari之外的'window.location.reload()'。所以我希望替代'window.location.reload()'完全跨瀏覽器,儘管我懷疑它不存在。 – andrewb

1

顯然,Mac上的Safari或iOS與location.reload的錯誤,所以,我開發這個簡單的跨瀏覽器解決方案以URL查詢字符串的優勢:

function refresh() { 
 
    var url = location.origin; 
 
    var pathname = location.pathname; 
 
    var hash = location.hash; 
 

 
    location = url + pathname + '?application_refresh=' + (Math.random() * 100000) + hash; 
 
}