2011-10-29 31 views
0

我似乎无法使用onkeyup事件来检测修改键(特别是Alt键)何时可靠地释放。有时它起作用,有时它不起作用。虽然大部分时间没有。onkeyup为修改键发射

我当前的代码是:

document.documentElement.onkeyup = function(e) { 
    e = e || window.event; 
    if(!e.altKey) { 
     // do stuff here 
     document.documentElement.onkeyup = null; 
    } 
} 

我在IE9我工作并在文件菜单弹出可能与Prevent default event action not working...?。不过,在尝试触发该事件之前,我确实会解散菜单。

+0

我想说的是,为了捕捉关键信息,我必须假设窗口必须处于活动状态。如果修改器键在Web浏览器中具有其他功能,则键控动作可能不是跨浏览器的一致性。具体来说,ALT如何显示菜单,或Win +键将焦点从浏览器中移除。 – donutdan4114

+0

这就是为什么我认为我的其他问题(链接到)是相关的,因为我试图阻止菜单默认出现,但它不起作用。 –

回答

1

不直接回答你的问题,但this可能会帮助你。这是关于浏览器如何管理keydown/press/up的非常详细的描述。

0

我相信,浏览器关键事件通常优先于页面定义的事件。不过,我会建议使用jQuery,因为我是just testing in IE9,他们似乎已经解决了这个问题。

编辑:虽然这似乎捕捉到事件,但我不认为有可能阻止IE执行它自己的事件。

+2

对不起,但我坚决反对使用jQuery或任何其他框架。打电话给我老式的,但我写我的JavaScript纯。 –

+0

@Kolink:你应该尝试jQuery,经过半个小时的编码,你永远不会回头。不,让那15分钟。 :)恕我直言,当然。 johndodo

+0

@Kolink足够公平,没有错。你有没有尝试过调用e.preventDefault()onkeydown?这可能会阻止菜单弹出。 –