Actionscript 3 加载页面时聚焦Firefox中的嵌入式SWF
我目前正在开发的Flex应用程序在启动应用程序时需要关注TextInput控件,但正如我在实现此功能时注意到的,调用TextInput.focus()将关注输入,但不会关注嵌入的SWF本身,因此用户无法在应用程序启动后立即键入输入,必须在启动之前单击SWF上的某个位置。我通过使用一些JS自动将焦点设置到SWF(使用ChromeV27和IE10进行测试和工作),部分解决了这个问题。可惜它在Firefox(v22)上不起作用。为什么呢?以下是我在index.html模板中的代码:Actionscript 3 加载页面时聚焦Firefox中的嵌入式SWF,actionscript-3,apache-flex,firefox,focus,Actionscript 3,Apache Flex,Firefox,Focus,我目前正在开发的Flex应用程序在启动应用程序时需要关注TextInput控件,但正如我在实现此功能时注意到的,调用TextInput.focus()将关注输入,但不会关注嵌入的SWF本身,因此用户无法在应用程序启动后立即键入输入,必须在启动之前单击SWF上的某个位置。我通过使用一些JS自动将焦点设置到SWF(使用ChromeV27和IE10进行测试和工作),部分解决了这个问题。可惜它在Firefox(v22)上不起作用。为什么呢?以下是我在index.html模板中的代码: function
function focusFlash()
{
var f = document.getElementById('${application}');
if(f)
{
f.tabIndex = 0;
f.focus();
}
}
我将此函数用作swfobject.embedSWF()回调。这是来自Adobe论坛的,可能值得一试 将以下行添加到swf 导入flash.external.ExternalInterface; 调用(“s=function(){document.getElementById('mymovie').focus();}”)
其中“mymovie”是html脚本中嵌入的swf对象的ID。我以前在这里看到过这个问题,但似乎找不到它。不管怎样:你提供的代码和我的相同,唯一的区别是它是从应用程序本身调用的。它真的对FF有效吗?另外,纯JS解决方案更适合我。我只是运行您的代码,仍然没有关注FF v22。这与我现在所做的类似,只是没有设置tabIndex,它只在IE中工作。