如何重定向和重新加载在DART的正确方法?(How to redirect and reload t

2019-08-02 01:36发布

什么是最佳的方式做一个重定向,并在DART重载?

难道我们只是使用: window.location.href = window.location.href

Answer 1:

有几种不同的方式来处理URI的变化和每个人都有自己的目的。

  1. 当你想给用户发送到另一个URI:

    • window.location.assign('http://google.com')

      这一个将用户带到谷歌,保持浏览历史记录(后退按钮历史)。 这就好比点击链接。

    • window.location.href = 'http://google.com'

      与前述相同,只是另一种方式来做到这一点。 href是一个二传手,使分配的情况发生。 我觉得以前的版本更干净。

    • window.location.replace('http://google.com');

      然而, replace()上的方法LocalLocation对象不只是用户发送至谷歌,但也没有把原始页面会话历史记录,这意味着用户将不会从无休止的后退按钮噩梦困扰。

      这是基本相同的HTTP重定向。 历史被跳过。

  2. 当你想要做一个重载/刷新。

    • window.location.assign(window.location.href)

      重载当前页面完全相同的URI。 这包含POST数据。 一些资源(如图片等)可能我从缓存重新加载,所以它可能不是一个完整的重新加载。

      这是基本相同按F5和跳过的发送POST数据。

    • window.location.href = window.location.href

      再次,同前。

    • window.location.reload()

      重新加载页面的这种方式也导致POST发送数据。 的“JavaScript版本” window.location.reload()也支持指定是否跳过缓存与否的参数。 然而,目前的飞镖实现不支持该参数,默认为资源从缓存中提取。

      此缓存参数可以被添加在一些点镖,但它现在还没有。 当到达时,你很可能只是传递true作为第一个参数,然后它会像按Ctrl + Shift + R。

摘要

  • 我想模拟一个点击<a>标签。

使用window.location.assign(url)

  • 我想重定向到一个新的网站,如HTTP重定向和跳过后退按钮历史。

使用window.location.replace(url)

  • 我想做与F5 POST数据。

使用window.location.reload()

  • 我希望做一个F5没有POST数据。

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

  • 我想做一个按Ctrl + Shift + F5。

不适用,也许在未来。 它很可能是window.location.reload(true)



文章来源: How to redirect and reload the right way in Dart?