web-dev-qa-db-ja.com

Dartで正しい方法でリダイレクトしてリロードする方法は?

Dartでリダイレクトとリロードを行うための好ましい方法は何ですか?

使用するだけですか:window.location.href = window.location.href

21
Tower

URIの変更を処理する方法はいくつかあり、それぞれに独自の目的があります。

  1. ユーザーを別のURIに送信する場合:

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

      これはユーザーをGoogleに送り、閲覧履歴(戻るボタンの履歴)を保持します。これは、リンクをクリックするようなものです。

    • _window.location.href = 'http://google.com'_

      上記と同じですが、それを行う別の方法です。 hrefはセッターであり、割り当てが発生します。以前のバージョンの方がきれいだと思います。

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

      ただし、 replace() メソッドの LocalLocation オブジェクトは、ユーザーをGoogleに送信するだけでなく、元のページも配置しません。セッション履歴では、これはユーザーが終わりのない戻るボタンの悪夢に悩まされることはないことを意味します。

      これは基本的にHTTPリダイレクトと同じです。履歴はスキップされます。

  2. リロード/リフレッシュしたいとき。

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

      現在のページをまったく同じURIにリロードします。これにはnotにはPOSTデータが含まれていません。一部のリソース(画像など)はキャッシュからリロードされる可能性があるため、完全なリロードではない可能性があります。

      これは基本的に押すのと同じです F5POSTデータの送信をスキップします。

    • _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リダイレクトのような新しいWebサイトにリダイレクトし、戻るボタンの履歴をスキップしたい。

window.location.replace(url)を使用します。

  • やりたい F5POSTデータを使用します。

window.location.reload()を使用します。

  • やりたい F5POSTデータなし。

window.location.assign(window.location.href)を使用します。

  • やりたい Ctrl + Shift + F5

おそらく将来的には利用できません。おそらくwindow.location.reload(true)でしょう。

43
Kai Sellgren