在IE中的javascript键盘

时间:2011-02-28 12:12:47

标签: javascript 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个参数)。

问题是我唯一得到的提醒是&#34; Init !!!&#34;。它有什么问题或者我做错了什么?

非常感谢任何帮助。

编辑:我得到&#34; Init&#34;在播放器加载它的内容之前的消息..可能问题出现在哪里?

1 个答案:

答案 0 :(得分:2)

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

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