我看到每个答案都是e.preventDefualt,但这对我的情况没有帮助。我的情况是我想只阻止空格键的滚动部分。当我使用e.preventDefault时,它会停止滚动,但它也会在文本框中输入,因此我无法在其中键入空格。所以我想知道是否有办法阻止滚动,但允许实际键入空格。
onWindowKeyDown = function(e){
switch(e.which){
case 9:
e.preventDefault();
break;
case 32:
console.log(e);
e.preventDefault();
break;
}
};
好吧所以我试过这个,我也尝试过stopPropagation和即时版本。只有preventDefualt实际上会停止滚动,但当我输入文本框时,它不允许我输入实际的空格。
答案 0 :(得分:0)
我没有代码可以参考来验证这一点,但是我认为你可以检查e的目标,看它是否是输入元素。如果e.target不是输入或texarea,那么防止默认?
答案 1 :(得分:0)
您好,您可以检查事件的目标,以检查作为按键目标的元素是否是输入元素。如果目标是html的主体,则可以阻止滚动。这是一个有用的链接:https://jsfiddle.net/Lgyrn5bd/
window.onkeydown = function(e) {
if(e.keyCode == 32 && e.target == document.body) {
e.preventDefault();
return false;
}
};
当你检查事件的目标(e.target)时,如果你输入一个元素,那么目标将是输入/ textarea,否则它将是正文。因此,当您实际输入输入元素时,可以保持空格键的正常运行