HTML prevent space bar from scrolling page

后端 未结 4 1125
粉色の甜心
粉色の甜心 2020-12-01 13:51

I\'m using the code:

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

which does exactly what I want, stops the page fro

相关标签:
4条回答
  • 2020-12-01 14:19

    Try checking if target is the body:

    window.addEventListener('keydown', function(e) {
      if(e.keyCode == 32 && e.target == document.body) {
        e.preventDefault();
      }
    });
    body { height: 100000px; }
    <input />
    <textarea></textarea>

    Demo

    0 讨论(0)
  • 2020-12-01 14:25
    window.onkeydown = function(e) { 
        e = e || window.event;  //normalize the evebnt for IE
        var target = e.srcElement || e.target;  //Get the element that event was triggered on
        var tagName = target.tagName;  //get the tag name of the element [could also just compare elements]
        return !(tagName==="BODY" && e.keyCode == 32);  //see if it was body and space
    };
    
    0 讨论(0)
  • 2020-12-01 14:29

    You could look into e.target and if it is the body you return false.

    window.onkeydown = function(e) { 
      return !(e.keyCode == 32 && e.target == document.body);
    }; 
    
    0 讨论(0)
  • 2020-12-01 14:34

    You can check the target of the event, and only run your code if it's not a 'type-able' element. For example:

    window.onkeydown = function(e) {
        var elem = e.target.nodename;
        if( elem !== 'TEXTAREA' && elem != 'INPUT' ) {
            return !(e.keyCode == 32);
        }
    };
    
    0 讨论(0)
提交回复
热议问题