インターネットを見ていて、コナミコマンドの入力が必要になった時、いちいちマウスから手を離してキーボードから「上上下下左右左右BA」するのは面倒ですよね。パソコンを使っているのですから、単調な作業や繰り返しする入力は自動化したいものです。そこで、コナミコマンドを入力するBookmarkletを作成しました。
/*
================================================================================
Name : KonamiCommander Ver1.0.1
In : [none]
Out : [none]
Note : コナミコマンドを入力するBookmarkletです。
--------------------------------------------------------------------------------
Version : Ver1.0.0 | 2009/05/31 | 新規作成
: Ver1.0.1 | 2009/07/08 | Safariに対応
--------------------------------------------------------------------------------
License : MIT license
URL : www.kanasansoft.com
================================================================================
*/
(
function(){
[38,38,40,40,37,39,37,39,66,65].forEach(
function(keyCode){
["keydown","keypress","keyup"].forEach(
function(eventName){
var eve=document.createEvent("Events");
eve.initEvent(eventName,true,false,window,1);
eve.keyCode=keyCode;
document.body.dispatchEvent(eve);
}
);
}
);
}
)();
KonamiCommanderを導入し、アナタのインターネット生活をパワーアップしましょう。
説明
Firefoxでしか動作しないはずです。せめてSafari3で動作すればiPhoneやiPod touchからもコナミコマンドを入力できるようになったかもしれないのですが...。dispatchEventをbody要素でしているので、documentElementオブジェクトやwindowオブジェクトへaddEventListenerされていてもイベント伝播で対応できているはずです。
2009/07/08 追記
KonamiCommanderを修正しiPod touchとSafariで動くようになりました。iPhoneでも動作するはずです。Safariではどうも生成したイベントに関連づいたプロパティが初期化されてしまうようです。
KonamiCommander Ver1.0.0の処理概要
function f(e){
alert(eve.keyCode); //=>Firefox3の場合38,Safari4の場合0
alert(eve.charCode); //=>Firefox3の場合38,Safari4の場合0
alert(eve.myCode); //=>Firefox3の場合38,Safari4の場合38
}
document.body.addEventListener("keydown",f,false);
eve=document.createEvent("UIEvents");//UIEventでも動いた
eve.initUIEvent("keydown",true,false,window,1);
eve.keyCode=38;
eve.charCode=38;
eve.myCode=38;
document.body.dispatchEvent(eve);
イベントの初期化の例
//Firefox3では何故か動作しません
function f(e){
alert(eve.keyCode); //Safari4の場合0
alert(eve.charCode); //Safari4の場合0
alert(eve.myCode); //Safari4の場合38
}
document.body.addEventListener("keydown",f,false);
eve=document.createEvent("KeyboardEvents");//KeyboardEventでも動いた
eve.initKeyboardEvent("keydown",true,false,window,1);
eve.keyCode=38;
eve.charCode=38;
eve.myCode=38;
document.body.dispatchEvent(eve);
KonamiCommander Ver1.0.1の処理概要
function f(e){
alert(eve.keyCode); //=>Firefox3,Safari4共に38
alert(eve.charCode); //=>Firefox3,Safari4共に38
alert(eve.myCode); //=>Firefox3,Safari4共に38
}
document.body.addEventListener("keydown",f,false);
eve=document.createEvent("Events");//Eventでも動いた
eve.initEvent("keydown",true,false,window,1);
eve.keyCode=38;
eve.charCode=38;
eve.myCode=38;
document.body.dispatchEvent(eve);
イベント生成・初期化・発火のブラウザ間の互換性についてのまとまった情報が欲しいですね。
iPhone/iPod touchでBookmarkletを登録するには以下をご利用ください。