我正在开发一个移动网页,用户在该网页上点击一个按钮来切换默认隐藏的内容的显示。这是一个简单的例子:
<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,然后将焦点放在链接 1 上。这是 JQuery 代码:
$(document).ready(function() {
$('#button1').click(function() {
$('#div1').show(function() {
$('#link1').focus();
})
});
});
通常这是有效的。我使用 CSS 为 :focus 添加了一个红色边框,因此我知道该链接在可见后正在接收焦点。但是,当链接获得焦点时,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 宣布新聚焦的元素?