使用纯 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 库内部所做的所有事情,否则很难知道。
请注意,有一个keydown
事件不同于keypress
. 您可以在此处了解有关它们的更多信息:onKeyPress Vs。onKeyUp 和 onKeyDown
至于建议使用什么,如果您准备学习该框架,我肯定会建议使用 jQuery。同时,我想说你应该学习 Javascript 的语法、方法、特性,以及如何与 DOM 交互。一旦你理解了它是如何工作的以及发生了什么,你应该更容易使用 jQuery。对我来说,jQuery 让事情变得更加一致和简洁。最后,它是 Javascript,并包装了语言。
另一个非常有用的 jQuery 示例是 AJAX。浏览器与 AJAX 请求的处理方式不一致,因此 jQuery 将其抽象化,因此您不必担心。
这可能有助于决定: