javascript - IE 中 JavaScript 中的按键

标签 javascript apache-flex internet-explorer keypress

我有一个 Flex 应用程序。它在 HTML 页面上的播放器中运行。我需要捕获按键事件并防止 IE 浏览器按其预期运行。这是一些代码:

实际上,玩家被放置的部分..

<html>
<head>
</head>

<body scroll="no" onkeydown=keypress(event)>
<noscript>
    <object id="app" width="100%" height="100%" onkeydown="keypress(event)" onkeypress="keypress(event)">
        //some params
    </object>
</noscript>
</body>
</html>

这是我尝试以不同方式捕获按键输入的一个:

<script language="JavaScript" type="text/javascript">

        function keypress(e) {
            alert("Hello from keypress");
        }

        function init() {
            //index
            alert("Init!!!");
            document.getElementById('app').onkeydown = function() {
                alert("Key Pressed - 1");
            };
            document.onkeydown = function() {
                alert("Key Pressed - 2");
            };

            document.getElementById('app').onkeypress = function() {
                alert("Key Pressed - 3")
            };

            document.onkeypress = function() {
                alert("Key Pressed - 4")
            };

            window.onkeydown = function() {
                alert("Key Pressed - 5");
            };
            window.onkeypress = function() {
                alert("Key Pressed - 6");
            };

            document.body.onkeypress = function() {
                alert("Key Pressed - 7")
            };

            document.body.onkeydown = function() {
                alert("Key Pressed - 8")
            };

            if (window.addEventListener) {
                window.addEventListener('keypress', keypress, false);
            } else if (window.attachEvent) {
                window.attachEvent('onkeypress', keypress);
            } else {
                window.onkeypress = keypress;
            }
        }


        window.onload = init;
        document.onload = init;
    </script>

我不打算一起使用它们,只是将它们全部收集起来以向您展示我已经尝试了几乎所有内容(还包括所有带有 1 个参数的内容)。

问题是我收到的唯一警报是“Init!!!”。这是什么问题或者我做错了什么?

任何帮助将不胜感激。

编辑:我在播放器加载其内容之前收到“Init”消息..也许问题出在某个地方?

最佳答案

在 Internet Explorer 中,<object> 中的嵌入式控件内发生的事件元素不会在 DOM 对象上触发等效事件。它们由嵌入式控件使用,并且控件有责任相应地处理它们。

这意味着,当您的嵌入式 Flex 应用程序获得焦点时,您的 JavaScript 代码将无法处理任何关键事件。

关于javascript - IE 中 JavaScript 中的按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5141803/

相关文章:

javascript - Internet Explorer 7+8 即使条件为假,也会在 IF 内执行变量声明

html - css 下拉悬停在 Internet Explorer 中不起作用

javascript - 触发属性作为 angularjs 指令的函数

android - Flex Air For Android 中的透明背景?

android - Flex 4.6 隐藏/关闭软键盘

apache-flex - 在 Adob​​e Flex 中将数据写入文本文件

html - 图像中心垂直和水平对齐,具有响应能力

javascript - 使用事件委托(delegate)时如何访问与元素关联的数据

javascript - 如何使用 lodash map/countBy/groupBy 处理 JSON 字段?

javascript - 如何从javascript中的字符串中删除内联CSS