- ベストアンサー
キーイベントを擬似的に発生させることは可能?
JavaScriptのイベント処理で質問なのですが、 keydownなどのキーイベントを、実際にキーを押さずに擬似的に「このキーが押された」というイベントを発生させることは可能でしょうか? そもそも不可能ではと思っているのですが もしそういうテクニックがあるのならと思い質問させていただきました。 また、JavaScriptでは無理だがFirefoxのアドオンなら可能といった情報があればぜひ教えていただきたいと思います。
- みんなの回答 (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 を組み合わせていけるんじゃないかと。
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
状況がよくわからないのですが keydownを使わないとして何をトリガーにイベントを発生させるのでしょうか? 具体的に提示なさったほうがよいと思います
お礼
返答が遅くなりました。回答ありがとうございました!
補足
確かに具体的に説明しないと分かりにくいですね。失礼しました。 やりたいことは、 iFrameを作り、 フレームの外で何かをクリックしたときに フレームの中のページのkeydownイベントを起こす というものです。 イベントハンドラ関数を呼ぶだけならできるのかもしれないですが そのとき「どのキーが押されたかどうか」を 擬似的に設定するのはやっぱり無理ですかね。
お礼
返答が遅くなりました。 いただいた情報をもとに試しに以下のように組みました。 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); 回答ありがとうございました!助かりました!