我有一个 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/