在Firefox上按下空格键时禁用向下滚动[重复]

Posted

技术标签:

【中文标题】在Firefox上按下空格键时禁用向下滚动[重复]【英文标题】:Disable scroll down when spacebar is pressed on firefox [duplicate] 【发布时间】:2013-09-02 14:10:14 【问题描述】:

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

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

谢谢。

【问题讨论】:

请检查右侧的“相关”侧边栏。 ***.com/questions/2343573/… 这些都不适合我 【参考方案1】:

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

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

【讨论】:

@Alberto - 一定要阅读答案部分,上面写着 “这是大多数浏览器的预期行为。我一直在使用它,当它不使用时我会非常恼火'不能在页面中工作。”【参考方案2】:

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

document.documentElement.addEventListener('keydown', function (e) 
    if ( ( e.keycode || e.which ) == 32) 
        e.preventDefault();
    
, false);

【讨论】:

【参考方案3】:

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

return false 似乎包括 preventDefault。 Source

查看 JQuery API 以获取有关按键事件的更多信息 - 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 充当各种事件的规范器。如果这让任何阅读本文的人感到惊讶。我建议阅读他们的 Event Object 文档。

【讨论】:

此代码可以阻止在 HTML 输入时按空格键。您必须在此处检查 (e.target === document.body) 完整正确答案:***.com/a/22559917/3120495

以上是关于在Firefox上按下空格键时禁用向下滚动[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何禁用向上/向下键在 Visual Studio 中滚动方法重载?

在Firefox中禁用主窗口滚动onmouseenter iframe

如何向下滚动编辑控件以显示内容?

如何使用 jquery 为 HTML 画布提供键盘焦点?

禁用整页滚动

如何在flutter中登录后禁用用户返回