我通过使用 onClick(event,index)方法的 event.currentTarget 对象向连续点击事件添加aria-label。语音不在读取aria标签的内容。我在chrome浏览器和safari浏览器上都进行了测试,Voice over一直忽略所选行上的aria标签内容。
aria标签的内容包含文本“ Row selected”。在行上动态添加aria-label的目的是使配音将行读为选定的行onClick。
如果在声明期间在tr标签中添加aria-label,如下所示,“ Voice over”将按预期读取所选行的aria-label内容,而不是行单元格内容。
<tr role="row" aria-selected={isSelected} aria-label="row selected"/>
isSelected是布尔变量,将在选择行时设置为真。
但是当我尝试在单击行时动态添加aria-label时,即使Dom元素在单击行时已使用aria-label属性进行更新,配音也不会读取aria-label内容。
请帮助我解决有关问题的声音。
我尝试添加 aria-live =“ assertive” 和 aria-live =“ polite” 属性以赞叹
<tr role="row" aria-selected={isSelected} aria-live="assertive"/>
当我添加aria-live语音时,首先读取单元格内容,然后读取aria-label内容。但这会导致语音被读为Cell contents followed by Row selected
,而不是读为Row selected followed by cell Content
,这是另一个问题,如果我在行上使用aria-live属性会遇到比读取先前选择的行单元格内容还要多的问题当我选择新行时。这是因为我要删除该行的aria-label onBlur事件,因为onBlur上的行已更新,因此该行是上一行。Voice over也会读取上一行的内容。
因此,请告知我是否还有其他工作要做旁白以读取在单击行时添加的aria标签的内容。
答案 0 :(得分:0)
语音不在读取aria标签的内容
更改aria-label
不会被屏幕阅读器读取。但是,如果您导航出该元素并返回该元素,则应正确阅读该元素。
指定aria-live
无济于事,因为这适用于该元素的内容(子DOM元素),而不适用于该元素的属性。
但是,如果您已经在使用aria-label
,则不应添加aria-selected
来指示已选择该行。 aria-selected
就足够了。