如何使用Javascript将焦点设置在页面中嵌入的SWF中?我尝试使用通常的方法,但它似乎没有工作......
答案 0 :(得分:4)
遗憾的是,Firefox中的焦点管理和Flash存在已知问题。
Here's an article解释了一种可能对你有用的方法;结果是你可以使用JavaScript和flash.external.ExternalInterface来通知Flash文件键盘活动,直到Flash控件正常获得焦点。我之前已经实现了这样的方法,它运行得很好;例如,我自己的解决方案在包含HTML页面中看起来像这样:
<script language="javascript">
if (navigator.appName.indexOf("Microsoft") != -1)
{
document.attachEvent("onkeydown", ieKeyHandler);
window.attachEvent("onkeydown", ieKeyHandler);
function ieKeyHandler(event)
{
sendToFlash(event.keyCode);
}
}
else
{
document.onkeydown = function(e)
{
sendToFlash(e.keyCode);
}
}
function sendToFlash(s)
{
var flashCtl = thisMovie("yourFlashObjectID");
flashCtl.callIntoFlashFromJavascript(s);
}
function thisMovie(movieName)
{
if (navigator.appName.indexOf("Microsoft") != -1)
{
return window[movieName];
}
else
{
return document[movieName];
}
}
</script>
...然后在Flash文件中,您可以简单地为名为callIntoFlashFromJavascript的函数定义ExternalInterface回调处理程序,并将字符串参数传递给文本控件。诚然,这有点笨拙,但它确实有效。
有关使用ExternalInterface和JavaScript的端到端示例,请参阅my answer to this question as well。希望它有所帮助!