2011-02-17 84 views

回答

2

这段代码似乎在您按住shift键时会起作用,但它会在后续按键上起作用。您可以在第一次按键后取消绑定,但这也意味着即使在页面加载后它也会运行。

$(document).ready(function() { 
    $(document).keydown(function(e) { 
     if(e.shiftKey) 
      alert("Shift was held"); 
    }); 
}); 
+0

这只是他说的问题,他说他希望在页面加载期间,并且您的代码不会运行,直到页面加载。所以事件不会被定义,直到页面加载。 – ehudokai 2011-02-18 00:18:47

2

从Marko的回答中被盗和改进。

$(document).keydown(function(e) { 
    if(e.shiftKey) 
     alert("Shift was held"); 
}); 

只是删除了$(document).ready,因为您希望它在加载页面时,而不是在之后。

3

JavaScript中没有查询键盘状态。希望那里。你有听自己的事件和追踪状态。

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(); 

希望帮助, 干杯!