1

正如您可能知道的那样,某些浏览器具有此默认功能,可在单击空格键时向下滚动页面。我通常喜欢这个功能,但由于我网站的性质,我需要摆脱它。

我一直在使用

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

它吃掉了所有的空格键功能并完成了工作,但是如果用户正在输入评论或搜索查询并按下空格键,则不会在文本中添加空格,因为此功能已被吃掉。

那么有没有办法只禁用滚动部分并保留所有其他功能?

4

3 回答 3

2

也许试试这个:

window.onkeydown = function(e) {
          if(e.keyCode == 32 && e.target.nodeName.toUpperCase() === "BODY") e.preventDefault();
      };
于 2013-06-09T14:04:58.547 回答
2
window.onkeydown = function(e) {
    return !(e.keyCode == 32 && (e.target.type != 'text' && e.target.type != 'textarea'));
};
于 2013-06-09T14:08:55.650 回答
0

可能需要为 IE 均衡:

window.onkeydown = function(e) {
    var evt = e || window.event;
    var elem = evt.target || evt.srcElement;
    if(e.keyCode == 32 && elem.nodeName.toUpperCase() === "BODY") {
        evt.preventDefault();
        return false;
    }
};

(未经测试)

但是您需要在每个 iframe 中/内部附加一个事件,使用iframeref.contentWindow.

页面和 iframe 加载后,您可以循环浏览frames[]集合。

于 2013-06-09T14:20:50.113 回答