nam*_*ata 4 html accessibility wai-aria uiaccessibility angular
我有一个angular2应用程序,我将一些动态文本绑定到ARIA-LABEl以获得嵌套的DIV.但是当我使用JAWS阅读器在页面上找到DIV时,它并没有读取指定的文本.这是我试图阅读的文本 - attr.aria-label ="{productDetails?.ProductName}}的产品详细信息"
此外,如果我给这个div指定一个标题角色,它会读取动态文本,但不会在文本前面加上"产品详细信息"的前缀
<div [ngClass]="getDescClass()" class="prdDetails-div" aria-label="some text">
<div autofocus attr.aria-label="Product details for {{productDetails?.ProductName}}" class="productDetails-name" style="cursor:default!important" role="heading" >{{productDetails?.ProductName}} </div>
<div autofocus class="products-result-compare">
<!--{{getDescription(productDetails?.Description)}}-->
Small description
</div>
Run Code Online (Sandbox Code Playgroud)
上面说的是正确的,但有一个适当的解决方案:
A<div>
和<span>
既不是地标也不是交互式内容。Anaria-label
不会被屏幕阅读器读取(这是正确的)。
让 JAWS 或 NVDA 等阅读器读取 a 的正确解决方案<div>
是添加role
标签以及aria-label
.
<div role="navigation" aria-label="Main">
<!-- list of links to main website locations -->
</div>
Run Code Online (Sandbox Code Playgroud)
以下是 2 个链接,其中包含应添加的各种角色的广泛列表:
你的描述缺乏细节或工作的例子,所以不是试图提供一个解决方案的所有我可以提供的是:aria-label
不工作的<div>
,也没有<span>
.
一个<div>
和<span>
既不是地标,也没有互动的内容.一个aria-label
不会被屏幕阅读器来读取(这是正确的).
在不知道使用的情况下,我有两条建议可能有所帮助:
把aria-label
直接控制(知道它会覆盖控件的文本).
如果只希望屏幕阅读器用户遇到屏幕文本,请使用屏幕外文本.
使用屏幕外技术:
<div class="sr-only">
Here be redundant or extraneous content
</div>
Run Code Online (Sandbox Code Playgroud)
CSS可能看起来像这样(也考虑RTL语言):
.SRonly {
position: absolute !important;
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
clip: rect(1px, 1px, 1px, 1px);
top: auto;
left: -9999px;
width: 1px;
height: 1px;
overflow: hidden;
}
html[dir=rtl] .SRonly {
left: inherit;
left: unset;
right: -9999px;
}
Run Code Online (Sandbox Code Playgroud)
还有其他技术,但它们的价值取决于您的受众和技术概况.
你autofocus
对这些的使用<div>
让我感到紧张.我希望你不要将它们用作交互式控件(如按钮).理想情况下从不使用div
互动内容.
归档时间: |
|
查看次数: |
5516 次 |
最近记录: |