GMailとかでショートカットキー(ホットキー)で次々メールを開いたり、返信したりとWebページなのにまるでローカルのアプリのように動かせるが、よく使うページでそういうホットキーを設定したい!と思ってGreasemonkeyでそれを実装する方法を調べてみた。
keyup Event
まずはキー入力のイベントを取得する方法。document.addEventListener("keyup", function(e){これで、キーを押すとそのキーコードをダイアログで表示するようになる。
alert(e.keyCode);
}, false);
keyCode定数
イベントは取れたが、いったいどのキーがID何番なのかがよくわからない。定数はどこに定義されてるんだろうと調べてみたがいまいちわからんかったが以下の方法で一応ゲットできるみたいconst KeyEvent = document.createEvent("KeyboardEvent");
alert(KeyEvent.DOM_VK_N); // NキーのキーID
これらをふまえて
const KeyEvent = document.createEvent("KeyboardEvent");こんな感じでNキーを押すと指定URLにジャンプするスクリプトができた。こんなのであってるのかなぁ?
document.addEventListener("keyup", function(e){
if(e.keyCode == KeyEvent.DOM_VK_N){
alert("キー入力検知!");
location.href = "http://www.chishow.com/";
}
}, false);
とりあえずこれで、ホットキーが設定されてないWebメールとかをがんがん読むのが楽になるじぇ
2 件のコメント:
これだけの実装だと、テキストエリアとかの入力でもイベントを拾っちゃうのが難しいところだね。
キューに KyeCode をためて特定のマッチを調べる方法で、複数キーの組み合わせをアサインするとか、あるいは、Ctrl/Shift/Alt を組み合わせるとかするとイイかもー。
そうか、テキスト入力時にひっかかっちゃうのか・・・
たまたま適応したページがテキスト入力のないページだったので気づかなかった
GMailとかどうやってるんだろう?
テキスト入力にフォーカスがあたったらショートカットが無効になるようにしてるのかな?
コメントを投稿