• ベストアンサー

キーイベントを擬似的に発生させることは可能?

JavaScriptのイベント処理で質問なのですが、 keydownなどのキーイベントを、実際にキーを押さずに擬似的に「このキーが押された」というイベントを発生させることは可能でしょうか? そもそも不可能ではと思っているのですが もしそういうテクニックがあるのならと思い質問させていただきました。 また、JavaScriptでは無理だがFirefoxのアドオンなら可能といった情報があればぜひ教えていただきたいと思います。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

>keydownを使わないとして いや、言ってない、言ってない(笑) 対応ブラウザとかは検討してないけど、一応規格にはあると思う。 (つーかDOM 3だからIEで出来ない可能性濃厚) document.createEventのソースコード https://developer.mozilla.org/en/DOM/document.createEvent と event.initKeyEvent(GeckoはDOM 2時代のものをベースに組んでいるからinitKeyBoardEventを使うらしい) https://developer.mozilla.org/en/DOM/event.initKeyEvent と element.dispatchEvent https://developer.mozilla.org/en/DOM/element.dispatchEvent を組み合わせていけるんじゃないかと。

kendo-kata
質問者

お礼

返答が遅くなりました。 いただいた情報をもとに試しに以下のように組みました。 Firefox3で問題なく動いているようです。 // aキーのkeydownイベントを起こす var _e = document.createEvent("KeyboardEvent"); _e.initKeyEvent("keydown", true, true, null, false, false, false, false, 65, 0); document.getElementById("dummy").dispatchEvent(_e); 回答ありがとうございました!助かりました!

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

状況がよくわからないのですが keydownを使わないとして何をトリガーにイベントを発生させるのでしょうか? 具体的に提示なさったほうがよいと思います

kendo-kata
質問者

お礼

返答が遅くなりました。回答ありがとうございました!

kendo-kata
質問者

補足

確かに具体的に説明しないと分かりにくいですね。失礼しました。 やりたいことは、 iFrameを作り、 フレームの外で何かをクリックしたときに フレームの中のページのkeydownイベントを起こす というものです。 イベントハンドラ関数を呼ぶだけならできるのかもしれないですが そのとき「どのキーが押されたかどうか」を 擬似的に設定するのはやっぱり無理ですかね。

関連するQ&A

専門家に質問してみよう