4

我在 stackoverflow 上看到了这个链接:$(document).ready 没有 jQuery

在我的上下文中,我正在使用

$(document).keydown(Keypress);
$(document).keyup(Keyoff);

对于功能

 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;
 }

是否有等效的javascript?像window.onload?

4

2 回答 2

11

为了使用更“等效”到 jQuery 的on方法,你不应该使用onkeydownandonkeyup处理程序。使用addEventListenerattachEventattachEvent专门针对旧版本的 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);

这允许您添加多个处理程序,就像 jQuery 的on方法一样。设置.onkeydownand.onkeyup属性只允许一个处理程序(除非你想覆盖另一个)。该函数还可以做很多addEvent事情,以进行标准的跨浏览器事件处理(一个示例是基于回调的返回类型发生的事情)。现在真的不重要——如果你想要完全的跨浏览器兼容性,那就是 jQuery 的用途:)

参考:

于 2013-05-11T04:27:09.120 回答
4
window.onkeydown = Keypress;
window.onkeyup = Keyoff;

https://developer.mozilla.org/en-US/docs/DOM/window.onkeyup

https://developer.mozilla.org/en-US/docs/DOM/window.onkeydown

于 2013-05-11T04:08:36.413 回答