2015-10-09 150 views
1

我正在開發一個HTML5遊戲,在我的遊戲中您使用空格鍵進行拍攝。這工作得很好,直到我意識到在較小的屏幕上,空格鍵會滾動到頁面的底部,隱藏遊戲的一部分。如何停止瀏覽器的熱鍵使頁面向下滾動?或者我怎樣才能在用戶點擊畫布時凍結滾動。以下是本場比賽的鏈接:http://73.9.75.150:8886/zn/index.html如何停止瀏覽器的熱鍵?

主要處理代碼:

window.addEventListener("keydown", function(e){ 
    keys[e.keyCode] = true; 
}); 

window.addEventListener("keyup", function(e){ 
    keys[e.keyCode] = false; 
}); 
+1

的可能的複製[按空格鍵移動頁面向下?](http://stackoverflow.com/questions/2343573/pressing-spacebar-moves-page-down) – JJJ

+1

請出示您問題中的相關密鑰處理代碼。一般來說,您可能需要使用'event.preventDefault()'來停止關鍵事件的默認行爲。 – nnnnnn

+0

@nnnnnn我添加了代碼 –

回答

4

您的典型事件偵聽器調用看起來是這樣的:

window.addEventListener("keydown", function (e) { 
    // shoot stuff 
}); 

在上面的回調e參數是一個事件對象。它有一個方法調用preventDefault(),顧名思義,它將停止事件的默認行爲發生。

這是你如何使用它:

window.addEventListener("keydown", function (e) { 
    if (e.keyCode === Keys.SPACEBAR) { // pseudo-code for key detection 

     // shoot stuff 
     e.preventDefault(); 

    } 
}); 

這是一個標準功能,將在最現代的瀏覽器。您可能需要稍微改變一些舊版瀏覽器,或者使用庫來爲您處理跨瀏覽器事件問題。

+0

謝謝!有用!爲我節省了很多時間。 –

4

可能的解決辦法:

document.addEventListener('keydown', function(e){ 
    if(e.keyCode === 32){ 
    e.preventDefault(); 
    } 
}); 
+0

提高答案的好方法是解釋爲什麼這是一個可能的解決方案。歡迎來到Stack Overflow,感謝您的貢獻! – krillgar