24

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

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

4

1 に答える 1

51

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 に再読み込みします。これにはデータが含まれていませ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 リダイレクトのような新しい Web サイトにリダイレクトし、戻るボタンの履歴をスキップしたい。

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

  • F5データでやりたいPOST

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

  • データF5なしでやりたい。POST

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

  • をしたいですCtrl + Shift + F5

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

于 2012-10-28T14:01:19.937 に答える