使用纯 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 and onKeyDown
至于建议使用什么,如果您准备学习该框架,我肯定会建议使用 jQuery。同时,我想说你应该学习 Javascript 的语法、方法、特性以及如何与 DOM 交互。一旦你理解了它是如何工作的以及发生了什么,你应该更容易使用 jQuery。对我来说,jQuery 让事情变得更加一致和简洁。最后,它是 Javascript,并包装了语言。
另一个非常有用的 jQuery 例子是 AJAX。浏览器与 AJAX 请求的处理方式不一致,因此 jQuery 将其抽象化,因此您不必担心。
以下几点可能有助于做出决定: