2011-10-03 149 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; 
 
}