2010-11-21 5 views
0

チェックここではテストページ私が間違っている場合http://rickchristie.com/testfocus.htmlFirefoxの奇妙な行動のonblur(3.6.12)

が私を修正:要素がフォーカス時に

  1. onfocusが起こります。
  2. onblurは、要素がフォーカスを失ったときに発生します。 onfocusなしonblurを使用して

のFirefox 3.6.12で(MacとWindows上でテスト)は、正常に動作します。しかし、入力要素がonfocusonblur両方の要素を持っているとき、それは奇妙な取得します。

  1. 入力であなたをクリックすると、onblurはなくonfocusで発射されます。
  2. onblurの直後にonfocusが直ちに発生します。
  3. テキストボックスに何も入力することはできません。

他のブラウザ(Safari、Opera)は期待通りに動作します。これはバグですか?それは私だけですか、それともFirefoxを使用しているすべての人がこれを経験していますか? onbluronfocusalert含まれている場合にのみ

アップデートは

この動作が発生するようです - 私はwindow.logのようなものを使用しないとき。

答えて

1

アラートボックスが開くと、テキストボックスからフォーカスが削除されます。 "FURUS"警告ボックスの上に "BLUR"警告ボックスが表示されます(後者は最初に開かれます)。そのためonfocusの前にonblurが発射されたように見えます。

my test pageを参照してください。これは、イベントハンドラが呼び出されたときにカウンタをインクリメントし、両方の後に2番目の警告ボックスを追加します。概念的にはブラウザのシングルスレッドモデルにもかかわらず、フォーカスハンドラからの警告ボックスが開くと、実際にFirefoxはブラーハンドラの実行を開始するようです。ただし、最初の(フォーカス)アラートボックスが閉じているときは、3番目(フォーカス後)のアラートボックスが開く前に2番目の(ぼかし)アラートボックスも閉じておく必要があります。

Firefoxがなぜそれをするのか分かりません。 Chromeはフォーカスハンドラを何度も繰り返し実行し続けますが、Opera、Safari、およびIEは、テキストボックスのフォーカスを取り除かないと予想しているように動作します(—)。

EDIT:私はそれがさらに悪化するために使用されるhttps://bugzilla.mozilla.org/show_bug.cgi?id=31889を見つけたと明らかにそこ–このテストケースを掲載します。

+0

これはすべてを説明しています。どのような動作が正しいのでしょうか? SafariとOperaの方法は私にとってもっと論理的だと思われます。 Firefoxの方法が標準であれば、onfocusにalert()を追加できないということですか? – rickchristie