23

当我按下空格键时,我想禁用向下滚动。这只发生在Firefox中。

我已经使用了溢出:隐藏和元标记视口。

谢谢。

4

3 回答 3

44

这应该可以解决问题。它指出,当在页面/文档上按下空格键时,它不仅会阻止其默认行为,还会恢复到原始状态。

return false 似乎包括 preventDefault。资源

检查 JQuery API 以获取有关 keydown 事件的更多信息 - http://api.jquery.com/keydown/

window.onkeydown = function(e) { 
    return !(e.keyCode == 32);
};

jQuery 示例

$(document).keydown(function(e) {
    if (e.which == 32) {
        return false;
    }
});

编辑

正如@amber-de-black 所说,“上面的代码将阻止在 HTML 输入上按空格键”。要解决此问题e.target,您需要将空格键阻止在确切位置。这可以防止空格键阻塞其他元素,如 HTML 输入。

在这种情况下,我们指定空格键和 body 目标。这将防止输入被阻塞。

window.onkeydown = function(e) {
  if (e.keyCode == 32 && e.target == document.body) {
    e.preventDefault();
  }
};

注意:如果您使用 JQuery 使用e.which而不是e.keyCode Source

The event.which property normalizes event.keyCode and event.charCode

JQuery 充当各种事件的规范器。如果这让任何阅读本文的人感到惊讶。我建议阅读他们的事件对象文档。

于 2013-08-30T05:09:53.543 回答
8

检测是否按下空格键。如果是,则阻止其默认行为。

document.documentElement.addEventListener('keydown', function (e) {
    if ( ( e.keycode || e.which ) == 32) {
        e.preventDefault();
    }
}, false);
于 2013-08-30T00:31:04.190 回答
0

您是否尝试过在 javascript 中捕获 keydown 事件?如果您使用 jQuery,您可以在此处阅读有关捕获关键事件的更多信息:http: //api.jquery.com/keydown/

如果不是,您可以捕获并忽略空格键按键,如下所述: https ://stackoverflow.com/a/2343597/1019092

于 2013-08-30T00:24:24.143 回答