我有一个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;在播放器加载它的内容之前的消息..可能问题出现在哪里?
答案 0 :(得分:2)
在Internet Explorer中,<object>
元素中嵌入式控件中发生的事件不会触发DOM对象上的等效事件。它们由嵌入式控件使用,控件负责相应地处理它们。
这意味着,当您的嵌入式Flex应用程序成为焦点时,您的JavaScript代码将无法处理任何关键事件。