JavaScript 中重新加载页面的首选方法是什么?

105

您更喜欢哪种方式重新加载当前页面(使用按钮)?

1 <input type="button" value="Reload" onClick="history.go(0)">
2 <input type="button" value="Reload" onClick="location.reload(true)">
3 <input type="button" value="Reload" onClick="window.location.reload(true)">
4 <input type="button" value="Reload" onClick="window.location.href=window.location.href">
5 <input type="button" value="Reload" onClick="document.location.reload(true)">
6 <input type="button" value="Reload" onClick="document.location.href=document.location.href">

据我所知,由于页面的URL经常更改,因此需要类似于“回退函数”的功能。

<a href="urlOfCurrentPage.html" onclick="window.location.reload(true);return false;">Reload</a>

对我不起作用,对吗?


请注意,数字2和3是同一件事。 - Matti Virkkunen
3
如果网址中带有 #,则编号为4和6的内容将不会重新加载任何内容。 - jontro
2
不是所有的浏览器都实现了2、3和5号功能,因此使用*.location.reload()作为参数仅用于指定是否应忽略缓存。https://dev59.com/2Ggv5IYBdhLWcg3wDsnZ - Dead.Rabit
OP错过了最受欢迎的方法:location.reload(); - Doug S
2个回答

56

取决于你想要做什么。第四种和第六种方法不会重新加载任何表单数据,它们本质上是对页面进行单独访问。某些版本的Firefox也存在第三种方法的问题。除此之外,我个人偏好第五种方法,因为它似乎最清晰易懂。


第二种方法(.reload)在某些情况下无法正常工作。 - Aristos
那么,“document.location.reload(true)”是跨浏览器安全且最健壮的吗? - Mel
@Mel,我相信是这样的。实际上,window和document都应该可以工作。 - tloflin
10
请注意,当您在使用document.location.reload()进行POST提交时,浏览器会询问您是否要重新发送数据以重新加载页面。 - wimh
Wimmel,是的,要解决这个问题,请使用PRG模式:http://en.wikipedia.org/wiki/Post/Redirect/Get - Sarel Botha

30
您还可以执行以下操作: wd 表示 window || document:
  • wd.location.assign(wd.location.href) : 转到URL
  • wd.location.replace(wd.location.href) : 跳转到URL并替换历史记录中的上一页
  • wd.location.reload(<true/false/blank>) : 从服务器/缓存/缓存重新加载页面

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接