当前位置: 首页 > 面试题库 >

检测javascript中按键的最简单方法

太叔何平
2023-03-14
问题内容

我有一个使用javascript进行游戏的想法(我将使用EaselJS进行开发),我将不得不检测按键。在互联网上四处浏览后,我看到了很多建议(使用window.onkeypress,使用jQuery等),但是几乎每个选项都有一个反对意见。你们有什么建议?使用jQuery听起来很容易,但实际上我没有使用该库的经验(而且我也不是JavaScript的资深人士),所以我宁愿避免使用它。如果jQuery是最好的选择,那么有人可以举一个很好的例子(说明会很棒)吗?

我猜这被问了很多,但是我找不到任何明确的答案。提前致谢!


问题答案:

使用纯Javascript,最简单的方法是:

document.onkeypress = function (e) {
    e = e || window.event;
    // use e.keyCode
};

但与此同时,您只能为该事件绑定一个处理程序。

此外,您可以使用以下命令将多个处理程序潜在地绑定到同一事件:

addEvent(document, "keypress", function (e) {
    e = e || window.event;
    // use e.keyCode
});

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

无论哪种情况,keyCode浏览器之间都不一致,因此还有更多需要检查和找出的问题。注意e = e || window.event-这是Internet Explorer的正常问题,将事件放入window.event而不是将事件传递给回调。

使用jQuery:

$(document).on("keypress", function (e) {
    // use e.which
});

除了jQuery是“大型”库以外,jQuery确实可以帮助解决浏览器之间的不一致问题,尤其是窗口事件方面的矛盾……这是不能否认的。希望很明显,我为您的示例提供的jQuery代码更优雅,更短,但却以一致的方式实现了您想要的功能。您应该能够相信e(事件)和e.which(键码,用于知道按下了哪个键)是正确的。用普通的Javascript很难知道,除非您执行jQuery库内部执行的所有操作。

至于建议使用什么,如果您愿意学习框架,我肯定会建议使用jQuery。同时,我想说的是您应该学习Javascript的语法,方法,功能以及如何与DOM交互。一旦了解了它的工作原理和正在发生的事情,就应该更轻松地使用jQuery。对我来说,jQuery使事情更一致,更简洁。最后,它是Java语言,并包装了语言。

jQuery非常有用的另一个示例是AJAX。浏览器与AJAX请求的处理方式不一致,因此jQuery可以抽象出来,因此您不必担心。



 类似资料:
  • 问题内容: 现在,我正在尝试用覆盆子pi和一个makey makey编写一个小代码。该makey makey是一个小板,当某些触点通电时,它充当usb键盘。我的问题是检测python脚本中这些按键的最简单方法是什么。我知道使用GPIO引脚会更容易,但是现在我正在寻找它。我已经看到了一些示例,例如使用pygame.key和getKey从msvcrt使用getch()(据我所知仅是Windows)。哪

  • 问题内容: 如何检测何时按下箭头键之一?我用它来找出: 尽管它适用于所有其他键,但不适用于箭头键(可能是因为默认情况下浏览器应该在这些键上滚动)。 问题答案: 箭头键仅由触发,而不由触发。 关键代码为: left = 37 up = 38 right = 39 down = 40

  • 问题内容: 在JavaScript中实现单例模式的最简单/最干净的方法是什么? 问题答案: 我认为最简单的方法是声明一个简单的对象文字: 如果您希望单例实例上有私人成员,则可以执行以下操作: 这就是所谓的模块模式,它基本上可以让你来封装对象私有成员,通过采取利用的优势关闭。 更新: 我想补充一点,如果要防止修改单例对象,可以使用ES5 方法冻结它。 这将使对象不可变,从而防止对其结构和值进行任何修

  • 问题内容: 判断用户是否使用移动设备通过PHP浏览我的网站的最简单方法是什么? 我遇到了许多可以使用的类,但是我希望有一个简单的if条件! 有办法吗? 问题答案: 码:

  • 问题内容: 是否有可能结合按键的组合来触发单个事件? 我已经在Chrome浏览器中尝试过,但该事件不会触发。 称我为疯狂,但我正在编写Chrome扩展程序,并希望同时按下+ + 键将其强制为隐藏的开发人员模式。 问题答案: 如果要检测的,和钥匙都在同一时间全部下来,你得看都和并保持地图为down的那些的。当他们全都崩溃时,请触发您的事件。 我假设您不关心它们按什么顺序按下(因为要可靠地按一下会很痛

  • 问题内容: 我正在用python开发一个秒表类型的程序,我想知道如何检测是否按下了一个键(例如p表示暂停,s表示停止),而我不希望它像raw_input这样等待用户输入,然后继续执行。有人知道如何在while循环中执行此操作吗? 另外,我想做这个跨平台的,但是如果那不可能,那么我的主要开发目标是linux 问题答案: 对于那些在窗户上努力寻找可行答案的人,我的是:pynput 上面的功能将打印你按