こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

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

また、JavaScriptでは無理だがFirefoxのアドオンなら可能といった情報があればぜひ教えていただきたいと思います。

投稿日時 - 2009-01-30 11:42:19

QNo.4673710

困ってます

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

>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

を組み合わせていけるんじゃないかと。

投稿日時 - 2009-01-30 12:23:14

お礼

返答が遅くなりました。

いただいた情報をもとに試しに以下のように組みました。
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);

回答ありがとうございました!助かりました!

投稿日時 - 2009-02-05 15:11:28

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

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

投稿日時 - 2009-01-30 11:52:00

補足

確かに具体的に説明しないと分かりにくいですね。失礼しました。

やりたいことは、
iFrameを作り、
フレームの外で何かをクリックしたときに
フレームの中のページのkeydownイベントを起こす
というものです。

イベントハンドラ関数を呼ぶだけならできるのかもしれないですが
そのとき「どのキーが押されたかどうか」を
擬似的に設定するのはやっぱり無理ですかね。

投稿日時 - 2009-01-30 11:55:31

お礼

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

投稿日時 - 2009-02-05 15:06:49