相当于jQuery的keyup()和keydown()的JavaScript [英] JavaScript equivalent of jQuery's keyup() and keydown()

查看:144
本文介绍了相当于jQuery的keyup()和keydown()的JavaScript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在stackoverflow上看到了这个链接: $(document).ready equivalent without jQuery a>



在我的上下文中,我使用

  $(document ).keydown(按键); 
$(document).keyup(Keyoff);

函数

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

//取消设置
函数Keyoff(evt){
if(evt.keyCode == 39)rightpress = false;
else if(evt.keyCode == 37)leftpress = false;
}

是否有JavaScript等价物?像window.onload?

解决方案

为了在jQuery上使用更多的等效 code>方法,你不应该使用 onkeydown onkeyup 处理程序。使用 addEventListener attachEvent attachEvent 专门针对IE的旧版本,所以 addEventListener 是标准的,并被所有其他浏览器使用。但是你应该总是包含支持,所以你可以创建一个函数来处理这一切。尝试:

$ $ p $ 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 方法。设置 .onkeydown .onkeyup 属性只允许一个处理程序(除非您想覆盖另一个处理程序)。使用 addEvent 函数可以实现标准的跨浏览器事件处理(例如基于回调的返回类型)。它现在真的不重要 - 如果你想要完整的跨浏览器兼容性,那就是jQuery的用途:)



参考文献:




I have seen this link on stackoverflow: $(document).ready equivalent without jQuery

In my context I am using

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

for the functions

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

Is there a javascript equivalent? Like window.onload?

解决方案

In order to use some more "equivalent" to jQuery's on method, you shouldn't use the onkeydown and onkeyup handlers. Use addEventListener or attachEvent. attachEvent is specifically for older versions of IE, so addEventListener is the standard and is used by all other browsers. But you should always include support, so you can make a function to handle it all. Try:

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

This allows you to add multiple handlers, just like jQuery's on method does. Setting the .onkeydown and .onkeyup properties allows only one handler (unless you want to overwrite another). There's a lot more that the addEvent function could do, to make a standard, cross-browser event handling (an example is what happens based on the return type of the callback). It's really not important for now - if you want complete cross browser compatibility, that's what jQuery's for :)

References:

这篇关于相当于jQuery的keyup()和keydown()的JavaScript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆