私の要件は簡単です。ユーザーがCtrlキーを押すと、ページに通知が表示され、離すと通知が消えるので、Ctrlなどの修飾キーを追跡する必要があります。残念ながら、私はグーグルで手がかりを見つけられませんでした。Mousetrapなどの有名なキーボードライブラリもこのkeymaster
トピックをカバーしていないようです。
何か案は?
私の要件は簡単です。ユーザーがCtrlキーを押すと、ページに通知が表示され、離すと通知が消えるので、Ctrlなどの修飾キーを追跡する必要があります。残念ながら、私はグーグルで手がかりを見つけられませんでした。Mousetrapなどの有名なキーボードライブラリもこのkeymaster
トピックをカバーしていないようです。
何か案は?
修飾キーがトリガーされますkeydown
(ただし、トリガーされませんkeypress
)。次に、イベントオブジェクトに定義されているフラグを確認するだけです。shiftKey
、、、、など。altKey
_ctrlKey
metaKey
完全なリストはここにあります:http://api.jquery.com/category/events/event-object/
これを試して-
var ctrlKey = false;
window.onkeydown = function(e) {
if(e.keyCode == 17) {
ctrlKey = true;
}
};
window.onkeyup = function(e) {
if(e.keyCode == 17) {
ctrlKey = false;
}
};
function notify() {
if(ctrlKey) {
$('#notification').show();
} else {
$('#notification').hide();
}
}
function main() {
var _inter = setInterval(notify, 100);
}
main();
jQueryを使用すると、keydownおよびkeyupイベントハンドラーを使用するだけで、Ctrlキーが上下するのがわかります。ダウンしているかアップしているかを追跡したい場合は、ダウンしたときにグローバルフラグを設定し、アップしたときにフラグをクリアします。
コード例:
$(document).keydown(function(e) {
if (e.which == 17) {
$("#result").append("ctrl key pressed<br>");
}
});
e.whichのJQueryドキュメント:http://api.jquery.com/event.which/
作業デモ: http: //jsfiddle.net/jfriend00/mezwF/