如何在Dart中重定向并重新加载正确的方式?

时间:2012-10-28 13:37:15

标签: url redirect dart

在Dart中进行重定向和重新加载的首选方法是什么?

我们只使用:window.location.href = window.location.href

1 个答案:

答案 0 :(得分:39)

处理URI更改有几种不同的方法,每种方法都有自己的用途。

  1. 如果要将用户发送到另一个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重定向基本相同。历史记录被跳过。

  2. 当您想要重新加载/刷新时。

    • 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

  3. 摘要

    • 我想模拟点击<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)