Javascript全局键盘处理,没有听到A-Z键?

时间:2009-11-11 06:34:48

标签: javascript flex externalinterface

我正在尝试使用Javascript来拦截键盘事件,所以我可以在Flash应用程序中为“关闭窗口”和诸如此类的东西做CMD-W,因此浏览器无法使用它们。

好吧,我能够监听ALT,CTRL和CMD onKeyDown / onKeyPress事件,但我无法收听任何其他内容......以下是Flex项目的index.html文件中的代码:


<script language="JavaScript" type="text/javascript">
document.onkeydown = function(event) {applicationKeyboardHandler(event)}
document.onkeypress = function(event) {applicationKeyboardHandler(event)}
function applicationKeyboardHandler(event) {
    alert("Key Pressed")
}
</script>

我想这样做它可以听任何按键,而不仅仅是alt / ctrl / cmd。我错过了什么?

3 个答案:

答案 0 :(得分:2)

和蒂姆一样,我猜Flash / Flex正在吞下关键事件。由于Alt等是Meta键,因此它们不会在Flex中触发按键事件并传递给JS。另一方面,Flash会阻止某些手势(例如某些浏览器上的Ctrl + A)。我想,由于同样的原因(安全性),这些也被JS处理掉了。哪些关键手势受到保护是高度浏览器依赖的。

可能浏览器不允许您处理CTRL-Q,以便用户始终关闭浏览器,即使打开了一些恶意网站。

答案 1 :(得分:1)

我认为Flash电影正在处理关键事件并阻止它们在文档树中向上传播。为什么不处理Flash本身的事件?

答案 2 :(得分:1)

你确定Flash没有阻止它吗?您是否尝试在没有Flash的页面上运行代码?

您应该尝试将事件附加到窗口而不是文档