6

私は現在、HTTP 投稿フォームとヒストリー プッシュステートで少し問題に直面しています。

ユーザーが POST フォームを送信し、example.com/page-1このページ内のリンクをクリックするexample.com/page-2と、history.pushstate にリダイレクトされます。JS スクリプトは、現在の URL を変更し、古い URL を履歴にプッシュしてから、新しいコンテンツを表示するだけです。これは私にとっては完璧に機能します。

問題: ユーザーがオンにexample.com/page-2なり、手動でページを更新すると(ctrl+r または更新ボタン)、Chrome はユーザーにフォームを再度送信するように求めます。しかし、フォームは実際には入っexample.com/page-1ていたので、この「新しい」ページで再度質問する理由はありません。

ブラウザからの再投稿プロンプトを防ぐために、popstate の変更時に JavaScript で以前に送信されたすべてのデータをクリアする方法はありますか? または、履歴の状態で何か不足していますか? それとも、現在ブラウザでまだうまく実装されていないものですか?

他のブラウザーでは pushstate を実装していないため、chrome でのみテストしました。

4

2 に答える 2

1

代わりにreplaceStateを試してみてください。これを参照してください。

replaceState()方法_

history.replaceState()は、replaceState()が新しい履歴エントリを作成する代わりに現在の履歴エントリを変更することを除いて、history.pushState()とまったく同じように動作します。

replaceState()は、ユーザーの操作に応じて現在の履歴エントリの状態オブジェクトまたはURLを更新する場合に特に便利です。

于 2012-12-14T21:33:51.680 に答える