代码之家  ›  专栏  ›  技术社区  ›  Ben

Flex可访问性-标签焦点不再是Flex应用

  •  3
  • Ben  · 技术社区  · 14 年前

    在可访问的flex应用程序中,用户可以使用TAB键在控件中导航。

    用户激活特定链接后,flex应用程序会弹出在html页面顶部,并使用swfobject.embedSWF加载。

    它在大多数情况下都能很好地工作,但在某些情况下,这两种情况都会发生:

    a)flex应用程序加载正常,“flex focus”设置在intro文本标签上以大声读出,但按tab键似乎仍在页面后面的链接中循环。 (现已修复,请参见编辑2)

    b)焦点工作良好,按tab键可以循环切换控件,但在浏览完控件后,它会从flex应用程序切换到地址栏上。。甚至不点击就试图回到flex应用程序,都成了噩梦。。这不太方便访问。

    有什么办法可以防止这些事情发生吗?

    编辑:目标浏览器是IE,似乎是Jaws最常用的浏览器

    编辑 :我设法解决了问题(a)。诀窍是调用swf对象上的focus,但在稍有超时之后-一定与flash/js ready state有关。

    setTimeout(function(){
       document.getElementById('swfobject').focus()
    },25);
    

    问题(b)仍然是一个问题,尽管。。。

    2 回复  |  直到 10 年前
        1
  •  3
  •   Florian F    14 年前

    在mx:Application组件中,为keyFocusChange添加一个事件侦听器并添加以下代码:

    protected function application1_keyFocusChangeHandler(event:FocusEvent):void
    {
        event.preventDefault();
        focusManager.getNextFocusManagerComponent(event.shiftKey).setFocus();
    }
    
        2
  •  0
  •   alxx    14 年前

    b)尝试在html中的swf之后放置一些可聚焦的元素。当focus离开flex应用程序时,查看该元素的onfocus处理程序是否被调用。如果是的话,你可以从那里重新调整flex应用的焦点或者将它重定向到你想要的地方。