keypress.js
是一个捕捉键盘输入的JavaScript库,它简朴易用,轻量级的紧缩版本只要9kB摆布,而且没有依靠其他JavaScript库。
我们通经常运用键盘事宜来监听keydown和keyup事宜。当按下键盘的任意键的时刻,keydown事宜被触发,摊开该键时keyup事宜被触发。但有一些特别位置的键盘符没法自动触发keyup事宜,这时候须要我们手动监听该事宜。所以,就有了keypress.js用来监听键盘事宜。
keypress.js的运用
首先在html页面中引入impress.js文件:
<script type="text/javascript" src="keypress.js"></script>
然后,实例化一个监听器:
var listener = new window.keypress.Listener();
接着,就能够用这个监听器监听键盘事宜了,我们能够经由过程挪用keypress.js的API来完成对键盘事宜的监听。下面就引见一下keypress.js都有哪些API。
.simple_combo
最简朴的监听方法就是运用运用simple_combo API
花样以下:
`simple_combo(keys, on_keydown_callback)`
它有两个参数,第一个参数是指定的单个按键或许组合键,第二个参数是一个回调函数,它在每一次用户按下指定的keyboard时被挪用。比方:
listener.simple_combo("ctrl c", function() {
console.log("You pressed ctrl c");
});
当用户同时按下”ctrl c”时,函数才会被挪用。
.counting_combo
用于对组合快捷键被按下的次数举行计数,花样以下:
counting_combo(keys, on_count_callback)
它也有两个参数,不过第一个参数是两个按键组合的快捷键,比方Ctrl c,Ctrl v等,第二个参数是一个回调函数,比方:
listener.counting_combo("shift s", function(e, count) {
console.log("You've pressed this " + count + " times.");});
count实际上是shift一向按着的情况下c被按下的次数。
.sequence_combo
用于注册一个序列组合,
花样以下:
sequence_combo(keys, callback)
它也有两个参数,第一个参数是用于形貌的按键序列,另一个参数是一个回调函数,当按键序列的按键都被按下时,这个函数才会被挪用。
比方:
listener.sequence_combo("up up down down left right left right b a enter", function() {
lives = 30;
}, true);
.register_combo
假如想要运用有更高等的功用keypress事宜,就能够运用.register_combo API,花样以下:
register_combo(combo_dictionary)
它供应了很多可选的参数,下面是这些可选的参数以及它们的默认设置:
listener.register_combo({
"keys" : null,
"on_keydown" : null,
"on_keyup" : null,
"on_release" : null,
"this" : undefined,
"prevent_default" : false,
"prevent_repeat" : false,
"is_unordered" : false,
"is_counting" : false,
"is_exclusive" : false,
"is_solitary" : false,
"is_sequence" : false
});
.register_many
假如一次要注册多个组合,为了轻易形貌这些组合对象,能够将它们悉数放到一个数组中,花样以下:
register_many(combo_dictionary_array)
比方:
var my_scope = this;
var my_combos = listener.register_many([
{
"keys" : "shift s",
"is_exclusive" : true,
"on_keydown" : function() {
console.log("You pressed shift and s together.");
},
"on_keyup" : function(e) {
console.log("And now you've released one of the keys.");
},
"this" : my_scope
},
{
"keys" : "s",
"is_exclusive" : true,
"on_keyup" : function(event) {
// Normally because we have a keyup event handler,
// event.preventDefault() would automatically be called.
// But because we're returning true in this handler,
// event.preventDefault() will not be called.
return true
},
"this" : my_scope
}
]);
.unregister_combo
用于注销一切的连击或许指定按键组合,其花样以下:
unregister_combo(keys_or_combo_dictionary)
比方注销一切的已注册的shift s组合:
listener.unregister_combo("shift s");
.unregister_many
花样以下:
unregister_many(array_of_keys_or_combo_dictionaries)
用于注销大批的组合,从按键构成的数组中或许组合字典中注销,比方:
listener.unregister_many(my_registered_combos);
.get_registered_combos()
用于取得监听中一切注册的组合。
listener.get_registered_combos()
.reset()
重置,用于清空一切注册的组合。
`listener.reset()`
.stop_listening()
住手监听,直到listen()再次被叫醒。
比方当我们在输入一个字段或许文本时就能够如许用:
$('input[type=text]')
.bind("focus", function() { listener.stop_listening(); })
.bind("blur", function() { listener.listen(); });
.destroy()
用于监听完毕后,摧毁此次监听的一切纪录。
listener.destroy();
有不对的处所,还请多多指教~~