Dartでリダイレクトとリロードを行うための好ましい方法は何ですか?
使用するだけwindow.location.href = window.location.href
ですか?
URI の変更を処理する方法はいくつかあり、それぞれに独自の目的があります。
ユーザーを別の 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 リダイレクトと同じです。履歴はスキップされます。
リロード/リフレッシュを行いたい場合。
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)
ます。
を使用しwindow.location.replace(url)
ます。
POST
。を使用しwindow.location.reload()
ます。
POST
を使用しwindow.location.assign(window.location.href)
ます。
将来的には利用できません。それはおそらくだろうwindow.location.reload(true)
。