JAWS 在读取第一个元素之前读取父标签的标签
JAWS reads labels of parent tags before reading first element
我正在尝试修复工作中 Angular 项目中的辅助功能缺陷。当页面加载并且我开始在页面中切换时,表单中可见的第一个元素被读取两次。我的代码如下所示
<form [formGroup]="form" role="form" attr.aria-label="Edit Form" novalidate>
<div class="form-row">
<div class="col-md-9 col-sm-12 col-lg-9 paddingLR0">
<!-- Hidden code not rendered due to ngIf=false -->
<div role="region" attr.aria-label="Edit button region" *ngIf="viewMode">
<!-- Hidden elements not rendered due to ngIf=false -->
<button *ngIf="isEditable" [disabled]="!canEdit" type="submit" (click)="enableEdit()">
Edit
</button>
<div class="back-header">
<a tabindex=0 (keyup.enter)="back()" (click)="back()" (mouseover)="changeBackIconOnHover('back-region-top')" (mouseout)="changeBackIcon('back-region-top')" id="back-region-top">
<img src="{{pathImg}}/back_black.png"
<span class="margin-left10">Back</span>
</a>
</div>
</div>
</div>
</div>
<!-- More code here -->
</form>
如果您看到代码,第一个可见的元素是 Edit
按钮,它嵌套在一个 div 中,其角色作为区域,而该区域又位于具有角色表单的表单中。当我浏览页面而不是只阅读一次按钮时 Edit button
JAWS 在第一个选项卡上读取 Edit Form form region. Edit Button
,然后读取 Edit button region. Edit Button
。父元素上没有 tabindex。删除角色属性和相应的标签不起作用。如何让 jaws 只读一次编辑按钮?
上述问题的发生是因为空 div 的 tabindex=0。
所以在上面的代码片段中我有一个注释行
<!-- Hidden code not rendered due to ngIf=false -->
它引用了多个 div,它们是与我的实际代码中的表单相关的警告、成功和错误消息。这些 div 中的每一个都有一个 ngIf
用于条件渲染和一个 tabindex=0 以使其可以通过选项卡访问。除了其中一个 div 只是有一个 tabindex 但没有 ngIf。所以它总是被渲染。如下所示。
<div tabindex=0>
<div ngIf="condition"> {{errormessage}}
</div>
</div>
如果 JAWS 在空元素上切换,它会读取之前的标签。我删除了外面的 div,它仍然是空的,问题就解决了。
我正在尝试修复工作中 Angular 项目中的辅助功能缺陷。当页面加载并且我开始在页面中切换时,表单中可见的第一个元素被读取两次。我的代码如下所示
<form [formGroup]="form" role="form" attr.aria-label="Edit Form" novalidate>
<div class="form-row">
<div class="col-md-9 col-sm-12 col-lg-9 paddingLR0">
<!-- Hidden code not rendered due to ngIf=false -->
<div role="region" attr.aria-label="Edit button region" *ngIf="viewMode">
<!-- Hidden elements not rendered due to ngIf=false -->
<button *ngIf="isEditable" [disabled]="!canEdit" type="submit" (click)="enableEdit()">
Edit
</button>
<div class="back-header">
<a tabindex=0 (keyup.enter)="back()" (click)="back()" (mouseover)="changeBackIconOnHover('back-region-top')" (mouseout)="changeBackIcon('back-region-top')" id="back-region-top">
<img src="{{pathImg}}/back_black.png"
<span class="margin-left10">Back</span>
</a>
</div>
</div>
</div>
</div>
<!-- More code here -->
</form>
如果您看到代码,第一个可见的元素是 Edit
按钮,它嵌套在一个 div 中,其角色作为区域,而该区域又位于具有角色表单的表单中。当我浏览页面而不是只阅读一次按钮时 Edit button
JAWS 在第一个选项卡上读取 Edit Form form region. Edit Button
,然后读取 Edit button region. Edit Button
。父元素上没有 tabindex。删除角色属性和相应的标签不起作用。如何让 jaws 只读一次编辑按钮?
上述问题的发生是因为空 div 的 tabindex=0。 所以在上面的代码片段中我有一个注释行
<!-- Hidden code not rendered due to ngIf=false -->
它引用了多个 div,它们是与我的实际代码中的表单相关的警告、成功和错误消息。这些 div 中的每一个都有一个 ngIf
用于条件渲染和一个 tabindex=0 以使其可以通过选项卡访问。除了其中一个 div 只是有一个 tabindex 但没有 ngIf。所以它总是被渲染。如下所示。
<div tabindex=0>
<div ngIf="condition"> {{errormessage}}
</div>
</div>
如果 JAWS 在空元素上切换,它会读取之前的标签。我删除了外面的 div,它仍然是空的,问题就解决了。