Javascript bind keyup/down event

后端 未结 1 1282
时光说笑
时光说笑 2020-12-14 02:29

How do I bind a function to the key down/up events?

It can be either binded to the entire document or a single element, either will work in this case.

This h

相关标签:
1条回答
  • 2020-12-14 03:02

    Key events only fire on the document and elements that may receive focus. Therefore to handle key events on a <canvas> element, you either need to allow it to receive focus by adding a tabindex attribute (e.g. <canvas id="game" width="800" height="400" tabindex="1"></canvas>) or by simply handling key events for the whole document, which may not be what you want (for example, if you have more than one element on the page for which you wish to handle key events).

    As to how to attach the event handlers, the simplest way is the following:

    var el = document.getElementById("your_element_id");
    
    el.onkeydown = function(evt) {
        evt = evt || window.event;
        alert("keydown: " + evt.keyCode);
    };
    
    el.onkeyup = function(evt) {
        evt = evt || window.event;
        alert("keyup: " + evt.keyCode);
    };
    

    If you may need multiple listeners, you can use addEventListener in most browsers or attachEvent in IE <= 8:

    if (typeof el.addEventListener != "undefined") {
        el.addEventListener("keydown", function(evt) {
            alert("keydown: " + evt.keyCode);
        }, false);
    } else if (typeof el.attachEvent != "undefined") {
        el.attachEvent("onkeydown", function(evt) {
            alert("keydown: " + evt.keyCode);
        });
    }
    
    0 讨论(0)
提交回复
热议问题