有没有办法在键盘事件处理程序之外读取键盘状态?具体来说,我需要在页面加载期间检查shift键是否关闭。我正在使用jQuery。
答案 0 :(得分:3)
JavaScript中没有查询键盘状态。希望有。你自己听事件并跟踪状态。
答案 1 :(得分:2)
当您按住shift键时,此代码似乎有效,但它可以在后续按键上运行。您可以在第一次按键后取消绑定,但这也意味着即使在页面加载后它也会运行。
$(document).ready(function() {
$(document).keydown(function(e) {
if(e.shiftKey)
alert("Shift was held");
});
});
答案 2 :(得分:2)
从Marko的回答中被盗和改进。
$(document).keydown(function(e) {
if(e.shiftKey)
alert("Shift was held");
});
只需删除$(document).ready,因为你想在页面加载时使用它,而不是在。
之后答案 3 :(得分:2)
您可以使用我的库KeyboardJS。它有一个名为.getActiveKeys()的方法,它会告诉你哪些键是活动的。该库实际上是以常识方式绑定到键和键组合。
我建议使用事件绑定。
KeyboardJS.bind.key('shift', function(){
//logic on key down
}, function(){
//logic on key up
});
请注意,您也可以执行复杂的操作,例如shift + z + x或z + x + c。如果将shift,z,x压在一起,或者z,x,c被压在一起,则会触发。
KeyboardJS.bind.key('shift + z + x, z + x + c', function(){
//logic on key down
}, function(){
//logic on key up
});
您可以阅读在事件回调之外按下的键,如
var activeKeys = KeyboardJS.getActiveKeys();
希望有所帮助, 干杯!
答案 4 :(得分:0)
这并不是我想要的解决方案,但这是一种依赖事件的解决方法:
var shiftKeyState = false;
var ctrlKeyState = false;
$(document).ready(function () {
$(document).bind("keydown keyup click", function (e) {
shiftKeyState = e.shiftKey;
ctrlKeyState = e.ctrlKey;
});
});