首先,以下是一个有用的资源:@987654321@
其次,您应该知道 keydown(或 keyup)和 keypress 之间存在区别。 keypress 通常不允许修饰键,尽管它确实允许在 Opera 中进行一些控制。最好使用 keydown 来实现跨浏览器的一致性。
无论是否输入文本框,无论是否使用 Prototype,我在 Opera 11.10 中都得到 keyCode === 13:
Event.observe(document, 'keydown', function (e) {
alert(e.charCode+'::'+e.keyCode);
});
或者直接使用native方法(IE使用attachEvent):
if (document.addEventListener) {
document.addEventListener('keydown', function (e) {
alert(e.charCode+'::'+e.keyCode);
}, false);
}
else { // IE
document.attachEvent('onkeypress', function (e) {
alert(e.charCode+'::'+e.keyCode);
});
}
但是,除非与控件或功能键结合使用,否则在文本框中确实不会检测到 alt(尽管这在 Chrome 或 IE 中不起作用)。这可能是因为 Windows 使用 alt 来授予对应用程序菜单栏的访问权限。
您可以尝试使用控制键并使用 preventDefault()(以避免像 ctrl-f 进行页面查找这样的默认行为),但这可能会惹恼那些可能不希望为您的页面禁用浏览器行为的用户。