0

我正在尝试使用 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。我错过了什么?

4

3 回答 3

2

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

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

于 2009-11-11T15:14:56.163 回答
1

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

于 2009-11-11T08:12:58.593 回答
1

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

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

于 2009-11-11T08:14:52.513 回答