2011-02-17 104 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(); 

希望幫助, 乾杯!