如何在 Dart 中以正确的方式重定向和重新加载?
Posted
技术标签:
【中文标题】如何在 Dart 中以正确的方式重定向和重新加载?【英文标题】:How to redirect and reload the right way in Dart? 【发布时间】:2012-10-18 00:51:36 【问题描述】:在 Dart 中进行重定向和重新加载的首选方法是什么?
我们是否只使用:window.location.href = window.location.href
?
【问题讨论】:
【参考方案1】:有几种不同的方式来处理 URI 更改,并且每种方式都有自己的用途。
当您想将用户发送到另一个 URI 时:
window.location.assign('http://google.com')
这会将用户发送到 Google,保留浏览历史记录(后退按钮历史记录)。这就像点击一个链接。
window.location.href = 'http://google.com'
与上面相同,只是另一种方法。 href
是一个 setter,并导致分配发生。我觉得以前的版本更干净。
window.location.replace('http://google.com');
但是,LocalLocation
对象上的replace()
方法不仅将用户发送到 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)
。
【讨论】:
有关于Ctrl + Shift + F5
的消息吗?
如何在 Flutter (web) 中做到这一点?以上是关于如何在 Dart 中以正确的方式重定向和重新加载?的主要内容,如果未能解决你的问题,请参考以下文章
登录到网站后,它会根据检查“网络”重定向到正确的页面,但是会注销并重新加载登录页面