我正在开发一个移动网页,用户在网页上点击按钮以切换默认隐藏内容的显示。这里仅举一个简单的例子:
<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 并不宣布它 。 VoiceOy 焦点仍然在按钮上 。 ( 我在运行 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宣布新焦点元素?