[英]re announce a <p> under aria-live even if the text is same
我正在實現一個搜索框。 其中一種情況是必須公布結果的總數。 為了實現這一點,我將<p>
標記放在aria-live
區域內,它會按預期宣布它。
預期場景:
極端情況是用戶按兩次回車。
如果用戶在沒有任何更改的情況下再次按下回車鍵,則不會更新任何內容,因為計數仍然相同並且不會宣布任何內容。
我嘗試在輸入點擊時使用它:
if (document.getElementById("header")) {
const currentText: string = document.getElementById("header").innerHTML;
document.getElementById("search-header").innerHTML = "";
document.getElementById("search-header").innerHTML = currentText;
}
但是,它仍然沒有宣布。
還有另一種方法可以做到這一點嗎?
我最近遇到了類似的情況。 您已經實現了一半的解決方案(將innerHTML
重置為空字符串,然后將其設置為currentText
)。 解決方案的另一半是將aria-relevant
屬性設置為all
。
默認情況下, aria-relevant
屬性設置為additions text
,但這忽略了removed
選項。 由於您需要屏幕閱讀器將更改拾取為空字符串(當您刪除文本時),您需要將屬性設置為all
(這與additions text removed
相同)。
作為最佳實踐,通常應該不理會aria-relevant
屬性,但我還沒有找到另一種方法來讓屏幕閱讀器兩次發布相同的公告。
在您的情況下,我還將aria-live
屬性直接添加到具有id="search-header"
的元素中。 它應該看起來像這樣:
<h6 id="search-header" aria-live="polite" role="status" aria-relevant="all">
X items found
</h6>
您可以在此處閱讀有關aria-relevant
屬性的更多信息。
而且,這里有更多關於aria-live
區域的信息。
我遇到了同樣的問題。 最后,如果將相同的字符串再次添加到 aira-live div 中,我會通過添加句點來修改字符串。
我將新的文本值與標簽中的現有值進行了比較,如果值相同,則將句點 (.) 添加到傳入的字符串中。
if (msg == $(".aria-live-div").text()){
msg = msg + "."
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.