簡體   English   中英

播報結束時切換aria-live嗎?

[英]Toggle aria-live when announcement finishes?

我目前正在研究一個交互式pdf閱讀器項目,以使其更易於訪問。 我做了一個<p>元素,它在屏幕上是不可見的,並賦予它aria-live屬性。 每當我要宣布某事(例如打開抽屜)時,我都會設置該<p>元素的文本。 但是,如果用戶希望整個頁面都是公告,而Voice Over的鍵是VO + a ,那么也會讀取<p>元素,但是我想防止這種情況發生。

有人可以建議這是否是宣布更改的正確方法嗎? 如果是這樣,那么如果用戶希望讀取整個頁面,該如何防止<p>元素被讀取? 我目前正在使用<p>元素來宣布是否打開/關閉了抽屜,或者字體/頁碼等是否發生變化。

您不能阻止屏幕閱讀器讀取整個頁面來讀取aria-live元素。 您可以從屏幕上直觀地隱藏它,但不能從虛擬緩沖區或屏幕閱讀器的內部表示中隱藏它,從而無法訪問和讀取它。

要從屏幕上隱藏元素,請查看流行框架中存在的CSS類,如.visually-hidden,.sr_only等。 這是向屏幕閱讀器用戶顯示某些內容,而對常規屏幕用戶隱藏該內容的一種常用方法。

要從屏幕閱讀器表示中隱藏元素(但不一定是屏幕),可以使用aria-hidden。 但是隨后,詠嘆調生活也變得無效了。

您可能還會認為使用display:none或visible:hidden隱藏對scren閱讀器和可視屏幕的元素。 其他相同的技巧,例如font:0,width / height:0,opacity:0,clip:0等也有相同的問題,它們不一定有效地將元素隱藏在各處。 但是,在那種情況下,行為就不存在。 根據使用的確切技巧,在某些屏幕閱讀器和瀏覽器組合中,ARia-live將保持正常運行,而將停止與其他屏幕閱讀器一起工作,尤其是在Safari Mac和iOS上的VoiceOver。

一個小技巧是從DOM中刪除該元素,或在顯示或設置之后不久將其空白,以免一晃一晃的讀者之后便找不到該頁面。 但是,您還必須注意這一點。 在某些情況下,我已經觀察到,如果元素刪除得太早(在仍在播報公告的同時),它會使屏幕閱讀器立即刪除該公告。 而且,當然,您無法知道屏幕閱讀器是否已經完成閱讀消息,當前是否正在閱讀消息或尚未閱讀消息。 如果這樣做,請花點時間讓元素可見5秒鍾,10秒鍾或更長時間,以確保完全讀取該消息。

因此,總而言之,您沒有一種真正好的方法來保持aria-live元素正常工作,同時又無法防止屏幕閱讀器通過正常的頁面閱讀方式訪問它。

正如@quentinc已經解釋了視覺隱藏元素和屏幕閱讀器隱藏元素之間的區別一樣,您不能讓屏幕閱讀器可以使用該元素,但是要阻止它使用“全部讀取”命令。

在許多情況下使用aria-live非常方便,但是由於沒有關於您的具體情況的更多詳細信息,因此很難提出其他建議。 但是,由於您確實提到過“抽屜打開”,對我來說,這聽起來像是可以擴展/折疊的東西。 如果是這樣,那么您應該檢查出aria-expanded 您可以將該屬性的值從false更改為true以向屏幕閱讀器指示已擴展內容。 抽屜開口被認為是擴大的。 屏幕閱讀器將負責宣布更改,因此您不需要aria-live

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM