4

私は、Safari/Chrome の [戻る] ボタンのバグ (ブラウザーが属していないフィールドに偽のデータを配置する) の回避策を見つけようとしています。私は運がなかったので、今のところこれに対する良い解決策があるようです (2009 年にさかのぼる投稿が見られますが、良い解決策はありません)。

この例では: http://jsfiddle.net/eGutT/13/

最初のページ読み込みですべてがうまくいっていることがわかります。ただし、リンクをクリックしてブラウザの戻るボタンをクリックすると、値が間違ったフィールドに伝播されます。Safari または Chrome を使用してテストしてください。Firefox では問題なく動作します。

これは、特に次の場合に、非常に深刻な問題です。

  1. ユーザーが戻るボタンを押すと、このバグが発生します
  2. ユーザーは偽のデータに気付かない
  3. ユーザーがフォームに無関係な変更を加えた (影響を受けない別のフィールドで)
  4. ユーザーがフォームを送信

これで、偽のデータがデータベースにコミットされる状況が残ります!!

ところで、この問題は jQuery に関連している可能性があります。例でこの行のコメントを外すと、次のようになります。

updateRowNums();  // IF YOU COMMENT OUT THIS LINE...

余分な/偽のデータが導入されることはありません。

ありがとう、ガレン

4

1 に答える 1

0

あなたは0、1、2について話しているのですか?関数updateRowNumsがこれらの値を自動的に強制しているためです。その最初の列を維持したい場合は、次のupdateRowNumsように変更できます。

if (!$('#some_id').val()) { $('#some_id').val(x); }

(明らかに、これは最も効率的なコードではありませんが、値が存在しない場合はフィールドをリセットします。)

しかし、それがあなたの話していることではない場合、私はあなたの問題を再現することができませんでした。Chrome 9.0.597.83を使用していますが、すべての適切なデータがすべての適切な場所に保存されました。

于 2011-01-28T19:03:29.367 に答える