【发布时间】:2017-05-24 10:27:30
【问题描述】:
下面是我在 html 中用于 aria 可访问性的代码。它在 ChromeVox 上运行良好,但是当使用 JAWS 运行时,当焦点位于链接 Menu1 上时,所有 aria-labels 都会被读取。但是链接 options 的 aria-label 应该当焦点放在它上面时被阅读。
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<style>
#div1{
padding : 12px;
}
</style>
</head>
<body>
<div class="container">
<ul role="tablist" class="nav nav-tabs">
<li role="tab">
<div id="div1">
<a tabindex="0" aria-label="first menuitem" class="active">Menu1
<a class="dropdown-toggle" tabindex="0" data-toggle="dropdown" aria-label="Press spacebar to use options menu" tabindex="0">options</a>
<ul class="dropdown-menu" role="menu">
<li role="presentation"><a tabindex="0" role="menuitem">Properties</a></li>
<li role="presentation"><a tabindex="0" role="menuitem">Edit Properties</a></li>
</ul>
</a>
</div>
</li>
<li role="tab">
<a href="#">Menu2</a>
</li>
</ul>
</div>
</body>
我想要的是每个链接的 aria-label 应该只在焦点转到特定链接时才被读取,而不是当焦点在链接 Menu1 上时,这是当前的行为。
任何帮助将不胜感激。
【问题讨论】:
-
不要嵌套交互式控件,例如
<a href>。首先修复它(并摆脱tabindex)。 w3.org/TR/html51/dom.html#interactive-content -
哦等等——你是不是故意排除了
href?如果是这样,我将不得不在下面修改我的答案。
标签: html accessibility wai-aria jaws-screen-reader