2017-09-24 587 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()。 –