0

こちらのテストページを確認してください http://rickchristie.com/testfocus.html

私が間違っている場合は私を訂正してください:

  1. onfocus要素がフォーカスを取得したときに発生します。
  2. onblur要素がフォーカスを失ったときに発生します。

Firefox 3.6.12(MacおよびWindowsでテスト済み)では、なしで使用すると問題onblurなくonfocus動作します。ただし、入力要素にと要素の両方 がある場合、それは奇妙になります。onfocusonblur

  1. 入力をクリックすると、のonblur代わりにが起動されonfocusます。
  2. 直後onbluronfocusすぐに発火します。
  3. テキストボックスには何も入力できません。

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

アップデート

この動作は、が含まれている場合onblurにのみ発生するようです。のようなものを使用する場合は発生しません。onfocusalertwindow.log

4

1 に答える 1

1

警告ボックスが開くと、テキストボックスからフォーカスが削除されます。「BLUR」アラートボックスが「FOCUS」アラートボックスの真上に開くことに注意してください(後者が最初に開きます)。そのため、onblur以前に起動されたように見えonfocusます。

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

Firefoxがなぜそのようになっているのかわかりません。Chromeはフォーカスハンドラーを何度も起動し続け、Opera、Safari、IEは、テキストボックスのフォーカスを奪うことなく、期待どおりに起動します。

編集:https ://bugzilla.mozilla.org/show_bug.cgi?id = 31889を見つけたので、このテストケースをそこに投稿します。以前はさらに悪化していたようです。

于 2010-11-21T04:56:01.377 に答える