読者です 読者をやめる 読者になる 読者になる

Firefox2で、keydownイベントをCtrl+Enterで発生させ、その関数内でalertを呼び出すと、ダウンロードマネージャが開く

[programming]
スポンサーリンク

タイトルのまんまです。
alertを実行する関数をkeydownイベントとして登録しておいて、、
(Firebug入れてれば、適当なページで下記を流してみてください)

document.onkeydown = function(event) {alert(event.keyCode);}

これでCtrl+Enterを押すと、なぜかダウンロードマネージャも一緒に開いてしまいます。
(ちなみにダウンロードマネージャのショートカットは、Ctrl+Jです。)


alert以外にも、confirmやpromptでも発生します。
どうも、処理が中断されるようなときに発生するようです。
Firebugでブレイクはっても同じ現象になりました。
下記のページに行って、incsearch.jsの269行目にFirebugでブレイクはって、Ctrl+Enter押してみると試せます。


いまのところ、回避方法で思いついたのは、setTimeoutを使って次のキューで実行させる方法です。

document.onkeydown = function(event) {setTimeout(function(){alert(event.keyCode);}, 1);}


Firefox2.0.0.11 (Windows XP) で確認しました。
Firefoxのバグなのか、それとも自分が入れている拡張が悪さしているのか…
他のマシンでも試してみようと思います。

                                                  • -

追記@2008/01/18
別のWindows XPマシンでも発生しました。(入れているアドオンもほとんど一緒なので当然か…)
Firefox 2.0.0.11 (Mac OS X 10.4) では発生しませんでした。

                                                  • -

追記@2008/03/28
頂いた情報をまとめると、、
OSはWindowsのみで、Firefox 2.0.0.13 と Firefox 3Beta4 の両方で発生するようです。

あと、問題を発生させるHTMLは下記のような感じで、

<hmtl>
  <head>
  </head>
  <body onload="document.onkeydown = function(event) { if (event.keyCode == 13) alert('alert');}">
  </body>
</hmtl>

これでCtrl+Enterおせば確認できます。