2011-07-19 7 views
5

複数のチェックボックス入力要素を含むページがあります。これらを切り替えると、Javascriptでしかできない方法でページの外観が変更されます。Firefoxのフォームリカバリの制御

ページを閉じて開いたときに問題が発生します。ページが読み込まれた後の簡単な(一見矛盾した)瞬間、Firefoxはonchangeイベントを発生させずにチェックボックスの状態を復元します。

Firefoxがこれらの要素をいつ回復するかを判断する方法はありますか?少なくとも、ユーザーがブラウザ設定を変更しなくてもこの機能を無効にする方法はありますか?

jQueryも使用しています。役立つものがある場合は、

autocomplete="off"を入力に使用しても効果はありません。

+0

おそらく、ロードイベントが発生したときにフォームをリセットするのが最もよいでしょう。 - document.forms [0] .reset() '。 – RobG

答えて

4

変更ハンドラを起動するだけで、ページの状態をユーザーの最後の設定(良い考えのように見える)に一致させるには、このような処理が必要です。 :

$(window).load (function() { 
    $('input:checked').change(); 
}); 


See the demo at jsBin

+1

ああ、私はそれがdocument.readyの後に起こっていたことに気付き、ロードイベントを試みたことはありません。ありがとうございました! – YotaXP

+0

ようこそ。助けてうれしい! –

2

「これらを切り替えるとページの外観が変更されます」

問題があります。ページは、トグルのの状態に依存し、トグル時には変更されません。私も、「変更」イベントとブラウザの履歴に取り組んできました。それに対抗する代わりに、ユーザー固有のデータを自由に格納することができます。 が何であるかを知っていると思っても、入力状況に基づいてページを描画します。にする必要があります。

特定のコードを投稿した場合、私は変更を提案できます。

+0

基本的には、これらのボックスを切り替えるとどうなりますか... 1つの要素がDOMから永久に失われ、別の要素がアニメーションを使用して非表示になります(すべてのボックスがクリアされていれば非表示になります)オブジェクト、およびさまざまなDIV(チェックボックスに応じて)がサイズ変更され、スクリーンに同時に収まるように配置されます。このページは、ウィンドウが提供するスペースより多くのスペースを使用しないように設計されています。 (そのようにGroovesharkに似ています) – YotaXP

+0

私はちょうど2つの機能が別々であるべきだと言っています。 "change"イベントを使用しますが、実際の操作を行う "stateOfToggle"関数を呼び出さなければなりません。次に、document.readyで同じハンドラをトリガし、ユーザのチェックボックスの効果を再現することができます。 – Sinetheta