2016-07-22 78 views
3

第5期裝載機指標:我有我掙扎的可訪問性問題。我有一個角度的Web應用程序。加載內容時顯示頁面加載微調器/指示器。並且當頁面內容加載時,微調器被隱藏。這個「div」不會從DOM中刪除。裝載的div輔助功能:使用ARIA活

內容不讀取(由NVDAor爪)被裝載時的div。

<div class='loading' aria-live='polite' aria-label='Do not refresh the page' tabindex="-1">Do not refresh the page</div> 

我不希望改變應用程序的結構,但解決使用「詠歎調標籤」來解決這個問題,只是想知道如果我會做任何事情更使唱腔,現場的工作?

更新(27/7/2016)

進一步澄清:我不去除DOM的內容,但使用CSS顯示/隱藏內容(顯示:無顯示:塊,反之亦然)

+0

我的角度排列很低,但你有一個網址分享?不想要改變結構意味着我不太可能能夠幫助。 – aardrian

+0

@aardrian我的意思通過不想改變結構是詢問建議的,可以指向一個解決方案我也許正確地使用唱腔,如果我沒有做的是正確的,但是如果你有任何其他的話如果能解決我的問題,我會很感激的。 – vas

+1

你能澄清你的問題嗎?您是否說屏幕閱讀器不會朗讀加載div內容(「不刷新頁面」)?只有當它的內容CHANGES或顯示更改(例如從display:none到display:block)時,Aria-live纔會讀出它的元素內容。 – Josh

回答

3

aria-live觸發屏幕閱讀器當與aria-live的元素)內與aria-live的元件(或文本被添加或從DOM移除。相比之下,當您取消隱藏隱藏元素時,元素和文本都不會從DOM中添加或刪除,因此元素的aria-live屬性不起作用。

爲了讓屏幕閱讀器宣佈「不要刷新頁面」,這些選項應該做的伎倆:

  • 您可以創建<div class='loading' aria-live='polite'>元素,並從頭開始它的文字內容,然後添加元素到DOM。
  • 或者你可以用空的<div class='loading' aria-live='polite'>元素開始,然後填充其文本內容。

其它一些信息:

  • 只要元素中的文本是要朗讀什麼,你可以省略元素的aria-label='Do not refresh the page'屬性。
  • 爲了錦上添花,不能傷害到include a role attribute on the div that has aria-live。如果您不確定要使用哪個角色,請使用role="status" - 這是一個非常安全的選擇。
  • 當或者如果頁面是在一個狀態,你不再需要顯示「不要刷新頁面」,一定要扭轉上述步驟。(也就是說,如果你的第一個選項去了,你加入整個元素從DOM中移除,或者如果你使用第二個選項並且填充了元素的文本內容,請清除元素的文本內容。)
+0

感謝@ashley爲我清理aira-live。我認爲我的問題基本上是我期待着aria live能夠在show/hide上工作,這當然是行不通的。我還必須添加與詠歎調有關的(增加,刪除,全部)以及詠歎調直播,以便用於我的用例。 – vas

+0

@vas:我很高興聽到這個解決方案! –