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

Tow*_*wer 21 url redirect dart

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

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

Kai*_*ren 43

处理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不仅将用户发送给谷歌,而且还没有将原始页面放在会话历史中,这意味着用户不会遭受永无止境的后退噩梦.

      这与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()还支持一个参数,该参数指定是否跳过缓存.但是,当前的Dart实现不支持该参数,并且默认从缓存中获取资源.

      此缓存参数可能会在某个时刻添加到Dart,但它还没有.当它到达时,你很可能只是true作为第一个参数传递,然后它会是Ctrl + Shift + R.

摘要

  • 我想模拟<a>标签上的点击.

使用window.location.assign(url).

  • 我想重定向到HTTP重定向等新网站,并跳过后退按钮历史记录.

使用window.location.replace(url).

  • 我想F5POST数据做.

使用window.location.reload().

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

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

  • 我想做一个Ctrl + Shift + F5.

不可用,也许将来.它可能会window.location.reload(true).