【问题标题】:Javascript/Flash focus issue on different browsers不同浏览器上的 Javascript/Flash 焦点问题
【发布时间】:2010-09-04 17:18:28
【问题描述】:

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

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

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

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

  1. 在 Flash 影片动态添加到页面之前记住当前焦点(我就是这样做的,我无法将影片显示为初始页面加载的一部分)。
  2. 尝试将焦点设置到 Flash 影片。
  3. 检查焦点是否设置正确,因此我可以预期 Flash 影片实际上无需额外单击即可接收击键。
  4. 如果未设置焦点,则恢复为加载 Flash 影片之前的焦点。

我不确定如何(或是否)可以做到这一点,但我很想知道。我认为 document.activeElement 可能有用,但我无法做到这一点。感谢您的帮助!

【问题讨论】:

    标签: javascript flash focus


    【解决方案1】:

    这可能会有所帮助。这是一种使用 javascript 来避免完全关注实际 Flash 对象的解决方法...

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

    【讨论】:

      【解决方案2】:

      试试这样的:

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

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

      【讨论】:

        【解决方案3】:
        猜你喜欢
        • 2010-09-20
        • 1970-01-01
        • 2018-12-04
        • 2013-03-28
        • 1970-01-01
        • 2017-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多