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

时间:2010-09-04 17:18:28

标签: javascript flash focus

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

它实际上可以在Internet Explorer中使用,但我不喜欢它在Firefox或其他浏览器上的行为。基本上,我有一个用户名/密码登录字段INSIDE我的Flash电影,我想在Flash电影加载时给它焦点,这样你就可以立即开始输入你的用户名,而不必先点击该字段。

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

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

  1. 在将Flash影片动态添加到页面之前,请记住当前焦点(我就是这样做的,我不能将影片显示为初始页面加载的一部分)。
  2. 尝试将焦点设置为Flash影片。
  3. 检查焦点是否正确设置,因此我可以预期Flash影片实际上是在没有额外点击的情况下接收击键。
  4. 如果未设置焦点,请恢复到加载Flash影片之前所关注的内容。
  5. 我不确定如何(或者如果)这样做,但我很想知道。我认为document.activeElement可能很有用,但我无法做到这一点。谢谢你的帮助!

3 个答案:

答案 0 :(得分:2)

这可能会有所帮助。这是一种使用javascript的解决方法,以避免必须专注于实际的Flash对象......

https://github.com/englandrp/Cross-browser-Flash-tabbing-and-focus-solution

答案 1 :(得分:1)

尝试这样的事情:

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

您还需要在输入控件上将tabIndex设置为0.

答案 2 :(得分:0)