在Dart中进行重定向和重新加载的首选方法是什么?
我们只使用:window.location.href = window.location.href
?
答案 0 :(得分:39)
处理URI更改有几种不同的方法,每种方法都有自己的用途。
如果要将用户发送到另一个URI:
window.location.assign('http://google.com')
此用户将用户发送给Google,保留浏览历史记录(后退按钮历史记录)。这就像点击链接一样。
window.location.href = 'http://google.com'
与上述相同,只是另一种方式。 href
是一个setter,会导致分配发生。我觉得以前的版本比较干净。
window.location.replace('http://google.com');
但是,replace()
对象上的LocalLocation
方法不仅会将用户发送给Google,还会将原始页面放入会话历史记录中,这意味着用户不会受到影响永无止境的后退噩梦。
这与HTTP重定向基本相同。历史记录被跳过。
当您想要重新加载/刷新时。
window.location.assign(window.location.href)
将当前页面重新加载到完全相同的URI。这不包含POST
数据。我可能会从缓存中重新加载一些资源(如图像等),因此可能不是完全重新加载。
这与按 F5 并跳过发送POST
数据基本相同。
window.location.href = window.location.href
再次,与之前相同。
window.location.reload()
这种重新加载页面的方式也会导致POST
数据被发送。 window.location.reload()
的“JavaScript版本”还支持一个参数,该参数指定是否跳过缓存。但是,当前的Dart实现不支持该参数,并且默认从缓存中获取资源。
此缓存参数可能会在某个时刻添加到Dart,但它还没有。当它到达时,你很可能只是将true
作为第一个参数传递,然后它就像 Ctrl + Shift + R 。
<a>
代码。 使用window.location.assign(url)
。
使用window.location.replace(url)
。
POST
数据执行 F5 。 使用window.location.reload()
。
POST
数据的情况下进行 F5 。 使用window.location.assign(window.location.href)
。
不可用,也许将来。它可能是window.location.reload(true)
。