【发布时间】:2021-05-19 21:19:37
【问题描述】:
我正在尝试改善网站的可访问性,但我似乎无法解决 NVDA 屏幕阅读器和加载搜索页面结果的问题。
我创建了一个使用 Angular 和 AG-Grid 的 StackBlitz 示例。
结果网格最初是不可见的。当我第一次加载结果时,它会读出仅限屏幕阅读器的文本,然后开始阅读整个表格。如果表格不被大声读出,我会更喜欢,但这不是问题。
问题是当我再次加载结果,模拟另一个搜索时,阅读器的行为很奇怪。它读取一些随机的东西,并说像 1 1 3... 这样的数字,我认为这是分页的一部分。有时它会再次读取表格,有时则不会。
在我使用aria-controls="queryResultRegion" 的搜索表单上,目标有role="region" 和aria-live="polite" 以使读者知道有动态内容
<form action="." aria-controls="queryResultRegion">
<button (click)="loadResults()">Load result</button>
<button (click)="noResult()">Load no result</button>
</form>
<div role="region" aria-live="polite" id="queryResultRegion">
<my-grid [rowData]="rowData"></my-grid>
</div>
在结果组件 I 上,class="sr-only" 元素有条件地表示结果的数量或只是“无结果”。
<ng-container *ngIf="rowData">
<h2 class="sr-only" #resultHeader>Search Result</h2>
<div *ngIf="rowData.length < 1; else elseBlock" class="sr-only">
No results
</div>
<ng-template #elseBlock>
<div class="sr-only">
Number of results: {{ rowData.length }}
</div>
</ng-template>
<ag-grid-angular style="width: 100%; height: 200px;" class="ag-theme-alpine" [rowData]="rowData"
[columnDefs]="columnDefs" [gridOptions]="gridOptions">
</ag-grid-angular>
</ng-container>
【问题讨论】:
标签: accessibility ag-grid