[Firefox6]フォームの隠し項目に中途半端なキャッシュが効いてる?
Firefoxで、form内の隠し項目(input type="hidden")にjavascriptで値を設定し、ページを再読み込みするとあやしい動き。
フォームの隠し項目に、「とある値」を保持しておいて、ajaxでこの値にまつわる情報をサーバーから取り出してレンダリングしている。しかし、隠し項目を書き換えた後に、ページを再読み込みすると、サーバーが吐き出した値が無視され、書き換え後の値でレンダリングされてしまうのだ。
これだけだと、「ついF5押しちゃったよ編集内容消えちゃった」てなよくある状況には便利な機能に思えるのだけど、複数の隠し項目を書き換えてから再読み込みした場合には、なぜか最初のひとつだけが値を保持していて、それ以外のはサーバーが吐き出した値になってる。
深く検証していないので、Firefoxの不具合かどうかはわからないけど、少なくともIE9(ただしIE8の互換モード)ではこの現象が発生しなかった。(と思う)
で、対処方法。海外サイトで「ページのonload(またはこれに類するタイミング)で(出来れば数ミリ秒ほどのタイマー処理にて)フォームをリセット( Form.reset() )してやりゃあいいんだぜ!」という情報を見つけたが、これがまったく上手くいかずxxx。
結局思案の末、ページのonload(またはこれに類するタイミング)で、javascriptで値を代入するというバカバカしいほど単純な方法で成功。
なんだそりゃってな感じでスマン・・・
« 週末は呑んで由 | トップページ | 十六夜(いざよい) »
「プログラミング」カテゴリの記事
- 自分で書いたコードが大好き(2020.09.20)
- NPMのヨロコビ(2020.05.14)
- VanilaJS は必須科目(2019.02.25)
- MZ-700フルJavaScriptエミュレータ v1.0.6 をリリース(2019.01.26)
- 戦々恐々GitHub vs BitBucket(2019.01.08)
コメント