2009-03-04 9 views
5

JavaScriptを使用してWebアプリケーション用のグローバルキーボードショートカットハンドラを作成する最も堅牢な方法、つまり、どのイベントを処理する必要がありますか。JavaScriptを使用した堅牢なキーボードショートカット処理

Gmailのシステムのように、単一のキー入力ショートカットと、修飾キー付きのショートカットの両方を扱うことができます。 Ctrl + Bなどのコードは、IE 6と最新のブラウザで動作する必要があります。

私はPrototypeフレームワークを使用できますが、jQueryは使用できませんので、jQuery固有の回答はありません。

+0

http://www.openjs.com/scripts/events/keyboard_shortcuts/ – James

+0

私はそれをチェックします - ありがとう。なぜあなたは答えとして投稿しませんでしたか? –

答えて

5

LivePipeコントロールパッケージで使用できるHotKeyライブラリはPrototypeで動作し、IE互換です。

http://livepipe.net/extra/hotkey

+0

私はあなたの答えを受け入れるつもりです。これは私が探しているもののように見えますし、そのサイトには面白いものがたくさんあるので、ありがとう! –

+0

HotKeyは、指定されていない修飾子が押された場合(例えば、指定されたctrl + a、押されたctrl + shift + a、ctrl + aが検出された場合)、組み合わせを受け入れます。 – eyelidlessness

+0

もしそれがOS Xを検出し、cmd/metaでctrlを置き換えればそれはいいかもしれません。 – eyelidlessness

3

私は、onKeyUpイベントをdocument.bodyに添付します。次に、このイベントハンドラでは、Element.fireメソッドを使用してカスタムイベントを発生させます。この手順はオプションですが、実行するアクションからイベントハンドラを切り離すのに役立ちます。また、ボタンのクリックイベントと同じカスタムイベントハンドラを使用できます。

$(button).observe("click", function() { 
    $(document.body).fire("myapp:mycoolevent"); 
}); 

は限り懸念している修飾キーを扱うなど、this resourceをチェックアウト(非常に古いが、それでも該当見えます)より多くの助けのために:

$(document.body).observe("keyup", function() { 
    if(/* key + modifier match */) { 
     $(document.body).fire("myapp:mycoolevent"); 
    } 
}); 

$(document.body).observe("myapp:mycoolevent", function() { 
    // Handle event. 
}); 

その後、ボタンのクリックに同じイベントをバインドします。

+0

キーアップに問題があるようです。少なくともOS Xでは(しかし、WindowsとほとんどのLinux WMでもそうだと思いますが)、ほとんどのキーコマンドはkeydownでアクティブになります。この期待(適切なチェックを伴う)はショートカットに対しても一定の期待を払っています。修飾キーが最初になければならず、ショートカットごとに印刷可能なキーは1つだけです。 – eyelidlessness

4

JimmyPはコメントとして投稿ですが、それは、投票の目的のための答えであることを値します。

http://www.openjs.com/scripts/events/keyboard_shortcuts/

+0

私は知っている、なぜ私は彼が答えとしてそれを投稿していなかったのか尋ねた。 Upvoted。 –

+1

私は知っている、それは私が答えとして投稿した理由です。 ;)そして、コミュニティウィキを投稿しました。これは、獲得するポイントではないからです。ありがとうawoodland; – eyelidlessness

2

jwertyと呼ばれる新しいJavaScriptライブラリは、それが使いやすいとjQueryに依存しない、もあります。

+0

) –

6

私はミックスに別のものを投げ込むと思っていました。私は最近、マウストラップと呼ばれるライブラリをリリースしました。 http://craig.is/killing/mice

関連する問題