如何在 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)

我想像 HTTP 重定向一样重定向到新网站并跳过后退按钮历史记录。

使用window.location.replace(url)

我想用POST 数据做一个F5

使用window.location.reload()

我想做一个没有POST 数据的F5

使用window.location.assign(window.location.href)

我想做一个 Ctrl + Shift + F5

不可用,也许在将来。可能是window.location.reload(true)

【讨论】:

有关于Ctrl + Shift + F5 的消息吗? 如何在 Flutter (web) 中做到这一点?

以上是关于如何在 Dart 中以正确的方式重定向和重新加载?的主要内容,如果未能解决你的问题,请参考以下文章

登录到网站后,它会根据检查“网络”重定向到正确的页面,但是会注销并重新加载登录页面

iFrame 在手机上重定向和重新加载主页问题

如何在构建小部件中使用导航器进行重定向

如何在 axios 拦截器中编写重定向而不在 React JS 中重新加载

如何在不重新加载 HTML 页面的情况下重定向锚标记链接?

错误 503 centeron 如何正确重定向