不同浏览器上的Javascript/Flash焦点问题

不同浏览器上的Javascript/Flash焦点问题,javascript,flash,focus,Javascript,Flash,Focus,我一直在研究如何使用Javascript将焦点指向Flash电影。我曾在Stack Overflow和其他网站上讨论过它,似乎除了在Internet Explorer中,您无法可靠地完成这项工作。我只是通过Javascript对Flash对象调用.focus()方法 事实上,它在InternetExplorer中可以工作,但我不喜欢它在Firefox或其他浏览器上的行为。基本上,我的Flash电影中有一个用户名/密码登录字段,我想在Flash电影加载时对其进行关注,这样您就可以立即开始键入用户名

我一直在研究如何使用Javascript将焦点指向Flash电影。我曾在Stack Overflow和其他网站上讨论过它,似乎除了在Internet Explorer中,您无法可靠地完成这项工作。我只是通过Javascript对Flash对象调用.focus()方法

事实上,它在InternetExplorer中可以工作,但我不喜欢它在Firefox或其他浏览器上的行为。基本上,我的Flash电影中有一个用户名/密码登录字段,我想在Flash电影加载时对其进行关注,这样您就可以立即开始键入用户名,而无需首先单击该字段

Firefox的问题在于,它不仅没有设置焦点,还可以在Flash中看到字段内闪烁的光标,这实际上表明字段具有焦点。但是,您仍然必须单击

这在Firefox上会适得其反。如果这是一种行为,我甚至不愿尝试设置焦点。当然,我可以检查正在使用的浏览器,并确定是否调用.focus(),但在更高版本的Firefox中,此功能可能会更改。我希望有一个更好的解决方案,那就是:

  • 记住在Flash电影动态添加到页面之前的当前焦点(我就是这样做的,我不能将电影作为初始页面加载的一部分显示)
  • 尝试将焦点设置为Flash影片
  • 检查焦距是否设置正确,这样我就可以预期Flash电影实际上会在没有额外点击的情况下收到击键
  • 如果未设置焦点,则恢复到加载Flash影片之前的焦点
  • 我不知道如何(或是否)做到这一点,但我很想知道。我认为document.activeElement可能很有用,但我没能做到这一点。谢谢你的帮助


    这可能会有所帮助。这是一种使用javascript的变通方法,可以避免将注意力集中在实际的Flash对象上


    试试这样的方法:

    private function setInitialFocus():void {
       myInput.setFocus();
       ExternalInterface.call("function() { var app = document.getElementById('myApp'); app.tabIndex = 0; app.focus(); }"); 
    }
    
    您还需要在输入控件上将tabIndex设置为0