Safari と Chrome の「戻る」ボタンでフォームデータを変更する
-
13-09-2019 - |
質問
Safari と Chrome でこの奇妙な問題が発生します (Firefox と IE では動作します)。
- 最初の項目「A」がチェックされ、項目「B」と「C」がオフになっているこのチェックボックス リストから始めます。
- 次に、チェックボックス リストに表示される項目を並べる別のページに移動します。
- リスト内の項目の順序を変更して、「B」、「A」、「C」になります。
- 戻るボタンを押します
- ページがサーバーから再取得され (キャッシュが無効になっています)、サーバーから送信された応答を確認します。項目「A」はまだチェックされており、リストの最初の項目ではありません。
- !!!奇妙な行動!!!ページは新しい順序「B」、「A」、「C」でブラウザに読み込まれていますが、「A」はチェックされず、代わりに最初の項目「B」がチェックされます。
どうやら戻るボタンを押すとチェック項目の位置が元に戻り、サーバーから送信されたフォームデータが破棄されたようです。
ページを更新すると、順序は「B」、「A」、「C」となり、項目「A」がチェックされ、すべてが正常に見えます。
どちらの場合も、ページの IsPostBack は false に設定されています。
これは Web キットのバグですか?
キャッシュをクリアし、プライベートブラウズモードに移行し、履歴をクリアしてみました。まだ同じ動作です。
解決
私はChromeで同じ問題を発見しました。さらにテストでは、私はウェブサイトがセッションを使用する場合にのみ起こりました。 あなたが戻ってボタンを押すたびに、それを再投稿するのではなく、任意のポストデータを削除します。
http://www.duanehutchins.com/formtest.php:私はそれをテストするためのページを作成しました
の あなたはいくつかの情報を入力し、それを数回を投稿した場合、それが動作します。その後、戻って押してリロード。データが転載されていません。 私はセッションを無効にした場合は、、それが正常に動作します。 私は、Chromeにバグを報告しました。誰が出て場合に役立ちます私たちはわかります。
他のヒント
私たちは、ページ状態がその間に変化していても、Webkitのことで「復元」されているフォームデータと同様の問題があった。
同様のポスト Safariとクローム戻るボタンの変更が隠され、私たちのために働いていた良いヒントを与えたの形で値を提出します。ページ上のすべてのフォームにautocomplete="off"
を追加することで、我々はこの問題を解決することができます。
この例を参照してください。
http://jsfiddle.net/eGutT/9/する
これは、同様に私に起こっています。ユースケースは非常に簡単で、最も可能性の高い一般的なように、これはかなり根本的な欠陥のように思えます。私はすでに別のプロジェクトに2つの場所で、この問題に遭遇しました。セッションを無効にすると、実際にこの問題を回避した場合、それはありません。の本当ののほとんどのクライアントでも、このオプション、またはケアについて知っているではないだろうとして、修正します。