对,打开画外音后,Ios6中的画外音存在某些问题。这是方案: 当我单击链接时,说搜索,我给div aria-hidden = false,然后触发焦点在内部的输入元素上。然后,我单击另一个链接,它触发了对先前搜索链接的关注。但是现在-焦点移到了网址。
经过大量测试,我确定问题是焦点在输入元素上。我不知道输入集中后是否完全有可能将焦点放在另一个元素上。但这是客户的要求。 更重要的是,它可以在IOS 5中使用。
我有一个小提琴示例here: “ https://jsfiddle.net/37a6mqtu/6/”。
var $searchbar = $("#search-bar");
var $button = $("#btn-search-opener");
var $closebutton =$("#closebutton");
// handle click and add css
$button.on("click", function(){
$searchbar.attr("aria-hidden","false");
setTimeout(function () {
$searchbar.find('[name="q"]').focus().css("background-color","green");
}, 500);
});
$closebutton.on("click", function(){
$button.focus().css("background-color","red");
});
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#search-bar {
background: #fff;
border-radius: 4px;
padding: 20px;
font-size: 25px;
text-align: center;
transition: all 0.2s;
margin: 0 auto;
width: 300px;
}
button,#btn-search-opener {
background: #0084ff;
border: none;
border-radius: 5px;
padding: 8px 14px;
font-size: 15px;
color: #fff;
}
#search-bar.alt {
background: #0084ff;
color: #fff;
margin-top: 40px;
width: 200px;
}
#search-bar.alt button {
background: #fff;
color: #000;
}
#search-bar input:focus {
background-color:green;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#search-bar" id="btn-search-opener" class="btn-search-opener" aria-controls="search-bar" aria-label="search icon" aria-expanded="true">
<span class="sr-only" data-font-size="16" data-font-size-type="px" data-line-height="24px">search</span>
</a>
<div id="search-bar" class="search-bar" aria-hidden="true" >
<div class="container" data-font-size="16" data-font-size-type="px" data-line-height="24px">
<form role="search">
<a href="#" id=closebutton>X</a>
<div class="hold" data-font-size="16" data-font-size-type="px" data-line-height="24px">
<label class="sr-only" for="lbl-01" data-font-size="16" data-font-size-type="px" data-line-height="24px">search</label>
<input class="form-control" type="search" name="q" id="lbl-01" placeholder="search">
<input class="btn btn-search" type="submit" value="Search">
</div>
</form><!-- / search-form -->
</div><!-- / container -->
</div>
我希望焦点将停留在搜索链接上。
谢谢帮助!
答案 0 :(得分:0)
如果我正确理解问题,请单击“搜索”链接,将焦点成功移至搜索。然后,当您单击X-close时,您尝试将焦点放回到原始的“搜索”链接上,但是焦点却移到了地址栏上?
这个问题听起来很熟悉。我认为这是VoiceOver中的错误,在此处的stackoverflow或另一个有关可访问性的在线论坛中已进行了讨论,但我找不到对此的引用。
请注意,您在问题中提到了iOS5和iOS6,但当前版本为iOS12。 “ 5”和“ 6”是错字吗?
此外,我知道您的示例仅用于说明您的问题,但是以防万一,您实际上是将此模式用于其他编码时,我有一些可访问性注释:
aria-label
(“搜索图标”),但是链接(“搜索”)中已经存在可见的文本,因此不需要aria-label
。 aria-label
将覆盖元素中包含的所有文本。aria-label
,但需要一个。当前,屏幕阅读器只会说“ X链接”。您应该使用<a href="#" id=closebutton aria-label='close'>X</a>
(尽管可能会失败,WCAG 2.5.3)