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

问题描述

我在stackoverflow上看到了这个链接:



  • 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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

    10-11 18:40