![](/img/trans.png)
[英]Set aria-live to read updates before reading out the DOM element in focus
[英]Aria-live region is not reading out updates when an element is removed on chrome
當您將元素動態添加到 aria-live 區域時,Chrome 會讀出該區域中的所有項目,這很棒。
但是當您刪除一個元素時,Chrome 不會重新讀出該列表。 當您將區域用於錯誤時,這是一個問題,例如當用戶修復錯誤時,列表不會重新讀出。
此處示例: https://codepen.io/mildrenben/pen/WNNzVzN?editors=1010
<div aria-live='assertive'>
</div>
<button id='add'>add</button>
<button id='remove'>remove</button>
const addBtn = document.querySelector('#add')
const removeBtn = document.querySelector('#remove')
const ariaLive = document.querySelector('div')
let tick = 0
addBtn.addEventListener('click', () => {
let newElem = document.createElement('span')
newElem.textContent = tick
tick++
console.log(ariaLive, newElem)
ariaLive.appendChild(newElem)
})
removeBtn.addEventListener('click', () => {
ariaLive.removeChild(ariaLive.lastChild)
})
正確的方法應該是使用aria-relevant
屬性,但是瀏覽器支持很差,不可靠。
我通常不提倡做一些駭人聽聞的事情來讓瀏覽器以某種方式運行,但如果你真的需要讓實時區域報告刪除,我會建議以下內容:
aria-atomic
屬性設置為true
。 這意味着屏幕閱讀器將在每次添加(但不刪除)內容時讀取活動區域的全部內容。此處的小提琴示例: https://jsfiddle.net/mug6vonf/3/
您還應該使用aria-relevant :
價值觀:
以下一個或多個值的空格分隔列表:
additions
是將節點插入活動區域; 應該被認為是相關的。removals
是刪除節點; 應該被認為是相關的。text
是對現有節點的文本內容的更改; 應該被認為是相關的。all
相當於添加刪除文本。
aria-relevant="additions text"
是活動區域的默認值。
默認值不包括您可能需要的removals
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.