ARIA 螢幕閱讀器實現指南
即時區域
這僅僅是一個指南。即時區域標記是一個複雜的領域,在一定程度上可以自由解釋。以下內容旨在提供實現指南,以尊重螢幕閱讀器開發人員嘗試不同事物的需求。其目的是在提供關於如何使用標記的預期含義的有用指南的同時,支援即時區域作為螢幕閱讀器創新和競爭的領域,從而達到平衡。
解釋 WAI-ARIA 即時區域標記
- 即時更改是提示:通常,即時區域標記由作者提供作為提示,輔助技術可以允許全域性、站點甚至區域特定的設定,以及啟發式方法來幫助處理沒有 WAI-ARIA 提示的頁面上的即時更改。
- 如果使用者配置了第二個硬體通道,則可以選擇性地建立第二個、附加的佇列:如果有兩個呈現通道(例如,文字到語音和盲文顯示器),則可以維護兩個佇列以允許並行呈現。通道可以由使用者根據角色或禮貌程度進行配置,用於呈現即時區域。
- 忙碌的區域:位於標記為 `aria-busy="true"` 的區域內的任何更改,在清除該屬性之前不應新增到佇列中。
- 禮貌程度(`aria-live` 或來自 角色)優先:專案應根據它們在 `aria-live` 屬性中的禮貌程度級別或從 `role` 繼承的禮貌程度級別新增到佇列中(例如,`role="log"` 預設是禮貌的)。斷言性專案優先,然後是禮貌程度級別。或者,實現者可以選擇一項策略,清除更禮貌的專案,例如,斷言性專案會清除佇列中的任何禮貌性專案。
- 時間次之:根據事件發生的時間(較早的事件在前)對具有相同禮貌程度級別的專案進行優先排序。按發生順序呈現具有相同禮貌程度級別的專案。
- 原子(`aria-atomic="true"`)區域如果有多個更改,不應重複呈現相同的內容。當原子區域的新事件新增到佇列時,刪除該區域的先前事件。在呈現原子區域更改之前,可能最好設定一個微小的超時時間,以避免在兩個快速連續的更改時重複呈現該區域。
- 呈現更改時包含標籤:如果更改發生在某種具有語義標籤的內容中,請朗讀該標籤。這對於資料單元格中的更改尤為重要,因為列標題和行標題提供了重要的上下文資訊。
設定和啟發式方法的想法
- 允許使用不同的語音(在文字轉語音中)或其他不同的呈現特徵來區分即時更改。
- 當不存在 WAI-ARIA 標記時,自動呈現某些更改,除非使用者將所有即時更改配置為關閉。例如,自動朗讀由使用者自身輸入引起的更改,作為該輸入上下文的一部分。
- 允許全域性設定來關閉即時更改的呈現、呈現所有即時更改、使用標記或設定為“智慧”(使用啟發式方法)。