Javascript 歌剧中的原型观察事件问题
我正在使用原型并在window.document上执行Event.observe 我正在捕捉enter(键码13)和alt+f(altKey&&keyCode=70) 我的代码在firefox、IE和chrome上运行得非常好。对于Opera no.Enter,只有当我的焦点不在任何文本输入中时,才能捕获。Alt+F根本不起作用Javascript 歌剧中的原型观察事件问题,javascript,prototypejs,opera,Javascript,Prototypejs,Opera,我正在使用原型并在window.document上执行Event.observe 我正在捕捉enter(键码13)和alt+f(altKey&&keyCode=70) 我的代码在firefox、IE和chrome上运行得非常好。对于Opera no.Enter,只有当我的焦点不在任何文本输入中时,才能捕获。Alt+F根本不起作用 这是原型中的bug还是我需要在Opera上做一些额外的事情才能继续?正如我所说,在所有其他浏览器中,我的代码都能正常工作……首先,以下是一个有用的资源: 其次,您应该知
这是原型中的bug还是我需要在Opera上做一些额外的事情才能继续?正如我所说,在所有其他浏览器中,我的代码都能正常工作……首先,以下是一个有用的资源: 其次,您应该知道keydown(或keyup)和keypress之间有区别。keypress通常不允许修改键,尽管它允许一些类似于Opera的控件。最好使用keydown实现跨浏览器的一致性 在Opera 11.10中,无论是否输入文本框,无论是否使用如下原型,我都会得到keyCode===13:
Event.observe(document, 'keydown', function (e) {
alert(e.charCode+'::'+e.keyCode);
});
或者直接使用本机方法(使用IE的attachEvent):
然而,除非与控件或功能键结合使用(尽管在Chrome或IE中不起作用),否则在文本框中确实不会检测到alt。这可能是因为Windows使用alt来访问“应用程序”菜单栏
您可以尝试使用control键和preventDefault()(以避免出现诸如ctrl-f进行页面查找之类的默认行为),但这可能会激怒您的用户,他们可能不希望为您的页面禁用浏览器行为。Alt-f激活菜单,Opera不允许JavaScript处理此按键
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);
});
}