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 では keypress イベントを発生させず、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 に答える