2010-09-04 54 views
4

我一直在寻找如何使用Javascript将焦点引导至Flash影片。我已经看到它在Stack Overflow和其他网站上讨论过,似乎除了Internet Explorer之外,你无法可靠地做到这一点。我只是通过Javascript调用Flash对象上的.focus()方法。不同浏览器上的Javascript/Flash焦点问题

它确实在Internet Explorer中工作,但我不喜欢它在Firefox或其他浏览器上的行为。基本上,我在Flash影片的内部有一个用户名/密码登录字段,并且我想在Flash影片加载时给予它焦点,因此您可以立即开始输入用户名,而无需先单击该字段。

Firefox的问题在于,它不仅没有设置焦点,而且您可以在Flash中的字段中看到一个闪烁的光标,这真的表明该字段有焦点。但是,您仍然需要点击。

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

  1. 请记住Flash动态添加到页面之前的当前焦点(这是我如何操作,我无法显示电影作为初始页面加载)。
  2. 尝试将焦点设置为Flash影片。
  3. 检查焦点是否正确设置,因此我可以预期Flash影片实际上会在没有额外点击的情况下接收击键。
  4. 如果未设置焦点,请在加载Flash影片之前将其恢复为任何焦点。

我不知道如何(或如果)这可以做,但我很想知道。我认为document.activeElement可能是有用的,但是我不能很好地解决这个问题。谢谢你的帮助!

回答

1

尝试是这样的:

private function setInitialFocus():void { 
    myInput.setFocus(); 
    ExternalInterface.call("function() { var app = document.getElementById('myApp'); app.tabIndex = 0; app.focus(); }"); 
} 

你也想设置您的输入控件上的tabIndex为0。