JavaScript相当于jQuery的keyup()和keydown()

use*_*152 4 html javascript css jquery keypress

我在stackoverflow上看过这个链接:$(document).ready等效没有jQuery

在我的背景下,我正在使用

$(document).keydown(Keypress);
$(document).keyup(Keyoff);
Run Code Online (Sandbox Code Playgroud)

为了功能

 function Keypress(evt) {
     if (evt.keyCode == 39) rightpress = true;
     else if (evt.keyCode == 37) leftpress = true;
 }

 //unset
 function Keyoff(evt) {
     if (evt.keyCode == 39) rightpress = false;
     else if (evt.keyCode == 37) leftpress = false;
 }
Run Code Online (Sandbox Code Playgroud)

有javascript等价吗?喜欢window.onload?

Ian*_*Ian 10

为了对jQuery的on方法使用更多"等价" ,你不应该使用onkeydownonkeyup处理程序.使用addEventListenerattachEvent.attachEvent是专门用于IE的旧版本,addEventListener标准也是如此,并且被所有其他浏览器使用.但是你应该总是包括支持,所以你可以创建一个函数来处理它.尝试:

function addEvent(element, eventName, callback) {
    if (element.addEventListener) {
        element.addEventListener(eventName, callback, false);
    } else if (element.attachEvent) {
        element.attachEvent("on" + eventName, callback);
    }
}

addEvent(window, "keydown", Keypress);
addEvent(window, "keyup", Keyoff);
Run Code Online (Sandbox Code Playgroud)

这允许您添加多个处理程序,就像jQuery的on方法一样.设置.onkeydown.onkeyup属性只允许一个处理程序(除非你想覆盖另一个).这个addEvent函数可以做很多事情来制作标准的跨浏览器事件处理(例如基于回调的返回类型会发生什么).它现在真的不重要 - 如果你想要完全的跨浏览器兼容性,这就是jQuery的:)

参考文献: