JavaScript和JavaScript的区别是什么

window.location.href = window.location.href

and

window.location.reload()

功能呢?


当前回答

Firefox(12.0)的不同之处在于,在POST渲染的页面上,reload()将弹出警告并重新POST,而URL赋值将执行GET操作。

谷歌Chrome做一个GET为两者。

其他回答

从我3年的经验来看,我找不出有什么不同……

编辑:是的,就像他们中的一个说的,只有传递一个布尔参数给window.location.reload()是不同的。 如果你传递true,那么浏览器加载一个新页面, 但如果为false,则加载缓存版本…

区别在于

window.location = document.URL;

如果在URL中有一个散列(#)(后面有或没有一些东西),将不会重新加载页面,而

window.location.reload();

将重新加载页面。

在研究IE的一些异常行为时遇到了这个问题,特别是IE9,没有检查旧版本。似乎

window.location.reload();

结果在刷新,空白整个屏幕一秒钟,其中

 window.location = document.URL;

更快地刷新页面,几乎察觉不到。

做一点更多的研究,并与fiddler的一些实验,似乎window.location.reload()将绕过缓存和从服务器重新加载,无论你是否传递布尔值,这包括再次获得所有的资产(图像,脚本,样式表等)。如果你只想让页面刷新HTML,这个窗口。Location =文档。URL将返回得更快,流量更少。

不同浏览器之间的不同之处在于,当IE9使用重载方法时,它会清除可见页面,并从头重新构建它,而FF和chrome则会等到获得新的资产,并在它们不同时重新构建它们。

使用JSF,我现在有会话过期后刷新的问题:页面重新加载后的PrimeFaces ViewExpiredException和一些调查,我在FireFox中发现了一个不同:

调用window.location.reload()就像在FF上单击刷新图标一样,它会添加一行

cache - control信息= 0

当设置window.location.href工作时,就像在URL行中按ENTER键一样,它不会发送这一行。

虽然两者都作为GET发送,但第一个(重新加载)正在恢复以前的数据,应用程序处于不一致的状态。

如果你说window.location.reload(true),浏览器将跳过缓存并从服务器重新加载页面。Window.location.reload (false)将做相反的事情。

注意:window.location.reload()的默认值为false