首页 文章

在父级变得可见之后,iOS上的VoiceOver不会将焦点放在子元素上

提问于
浏览
1

我正在开发一个移动网页,用户点击按钮可以切换默认隐藏的内容显示 . 这是一个简单的例子:

<div role="button" id="button1">Show Link 1</div>

<div style="display:none" id="div1">
    <a href="#" id="link1">Link 1</a>
</div>

点击#button1,我想显示隐藏的div,然后将焦点放在Link 1上 . 这是JQuery代码:

$(document).ready(function() {      
    $('#button1').click(function() { 
        $('#div1').show(function() { 
            $('#link1').focus();
        })
    });
});

通常这是有效的 . 我添加了一个红色边框:使用CSS进行聚焦,因此我知道链接在可见后会获得焦点 . 但是,当链接获得焦点时,iOS上的VoiceOver不会宣布它 . VoiceOver的焦点仍然在按钮上 . (我在运行iOS 4.3.3的iPad和运行iOS 5.1.1的iPhone 4S上进行了测试) .

与上面的场景相反,如果获得焦点的元素与刚刚显示的元素相同,则一切正常,VoiceOver会宣布新聚焦的链接 . 以下是一个有效的方案示例:

<div role="button" id="button2">Show Link 2</div>

<div>
    <a style="display:none" href="#" id="link2">Link 2</a>
</div>

$(document).ready(function() {      
    $('#button2').click(function() { 
        $('#link2').show().focus();
    });
});

当该元素是刚刚可见的元素的子元素时,如何让VoiceOver宣布新聚焦的元素?

1 回答

  • 1

    通常这是有效的 .

    如果这意味着"sometimes it works and sometimes it doesn't work using the same code,"这让我相信存在时间问题 . 在任何过渡动画完成后,'s focused? Try adding a 1 second timeout to that last callback and see if you get different results. You'l想要移动焦点时,链接是否为屏幕外或动画 .

    通常这是有效的 .

    如果这意味着“某些代码工作(100%的时间)和其他代码,类似的代码不起作用(100%的时间),”你需要在bugreport.apple.com上提交一个错误 .

    在这两种情况下,如果您发布了可以测试问题场景的URL,也会有所帮助 .

相关问题