2017-09-24 63 views
1

我有一個網站有定期的空格鍵功能,不只是在輸入框內,所以我不能讓它返回錯誤,如果目標是身體。我只是想阻止它向下滾動頁面,但允許其他功能。使用vanilla JS可以做到這一點嗎?這裏是我的代碼:JS - 如何禁用空格鍵滾動,但允許其他空格鍵功能?

//Many other functions here 
 
function spacebar() { 
 
    window.onkeydown = function(e) { 
 
    if ((watch.isOn) && (!done)) {//u can stop it with any key 
 
     watch.freeze();//stop the stopwatch 
 
    } 
 
    else if (e.keyCode == 32) { 
 
     if (done) { 
 
     watch.start();//start the stopwatch 
 
     stage = 1; 
 
     } 
 
     if (stage === 0) { 
 
     stage = 1; 
 
     } 
 
    } 
 
    }
<html> 
 
    <body> 
 
    <h1 id="timer">0:00.000</h1> 
 
    <script src="js/timer.js"></script> 
 
    <!--The JS starts and stops this timer.--> 
 
    </body> 
 
</html>

因此在啓動時按下空格鍵的定時器,當按下任意鍵停止。

回答

1

按下空格鍵的默認行爲是滾動。我們必須防止默認行爲使用

event.preventDefault();

您使用window.onkeydown,傳遞事件參數的變種E中的能力。正如您已經證明的那樣,您知道如何通過鍵碼識別鍵。現在,如果按下的鍵是空格鍵,那麼防止默認行爲(在這種情況下包括滾動)。您可以選擇定義自己的行爲。

+0

這更適合於評論,因爲它沒有提供OP的問題的完整答案。考慮更新它以詳細說明這將如何解決問題。 – FluffyKitten

+0

您能解釋一下「超載空格鍵按下事件」是什麼意思嗎?同時把你的代碼放在反引號('')中更好。你也可以解釋我把這些代碼放在哪裏嗎? – Cubetastic

+0

您的代碼包含onkeydown事件處理。我假設你知道它是如何工作的,而不是從某處複製和粘貼。如果e.keyCode是空格鍵代碼,則應用e.preventDefault()。 –