10

基本的に、私はResig氏によるjQuery Hotkeysプラグインctrl+oを使用して、などのショートカットをキャプチャして処理しています...

わかりました。概念がわからないかもしれませんが、ドキュメント内のどこかctrl+oでトリガーされたものがドキュメントホットキーハンドラーによってキャプチャされるという印象を受けました。

たとえば、次のコードは一般的に機能します...

jQuery(document).bind('keydown', 'ctrl+o', fn);

ただし、ユーザーが入力ボックス内でホットキーをトリガーすると、惨めに失敗します。

次のことを行った場合にのみ機能します。

jQuery('body, input').bind('keydown', 'ctrl+o', fn);

新しい入力ボックスがDOMに追加されるたびに、いまいましいハンドラーをバインドする必要があるため、これは私の健康にかなり悪いことです。さらに悪いことに、CodeMirrorのような複雑なウィジェットの場合に何にバインドするのかわかりません。

私の問題が理にかなっているなら、おそらく私は間違ったアプローチを使用していますか?次のオブジェクトにもバインドしようとしましたが、機能しませんでした:window、、、documentbodydiv[contains the whole page]

注意:ここで試してみることができます。

4

2 に答える 2

6

これは実際にはプラグインの意図された機能です:

// Don't fire in text-accepting inputs that we didn't directly bind to
if ( this !== event.target && (/textarea|select/i.test( event.target.nodeName ) ||
    event.target.type === "text") ) {
    return;
}
于 2012-05-01T18:40:11.823 に答える
1

はい、ユーザーが入力ボックス内でホットキーをトリガーすると、JqueryHotkeys は惨めに失敗しました。

あるいは、ブラウジングすると、Jquery-Hotkeys と同様の機能を提供する Shortcut.js を 見つけました。

重要なことに、入力ボックス内で「ユーザー定義のショートカット機能」を有効または無効にするオプションもあります。

于 2012-07-17T13:59:25.140 に答える