2017-08-22 152 views
0

沒有閱讀的自信的詠歎調生活區域我有一個role="alert"的詠歎調活的區域與價值"assertive"不是在表單提交說話。當時也是由PHP編寫的,就像頁面加載一樣。在頁面加載/表格提交

它可以在個人電腦的NVDA上正常工作,但在Mac上沒有任何聲音。我發誓我已經測試過,並經常使用這種技術。

任何想法,爲什麼不說話?

股利如下:

<div class="alert alert-danger" role="alert" aria-live="assertive">Error: please fix the indicated fields:</div> 

回答

1

在頁面加載時直接閱讀ARIA直播區域是不可行的,或者在屏幕閱讀器+瀏覽器的某些組合中不可靠。 這是一個事實:你無法做任何事情。

將新的活動區域添加到DOM或更新現有活動區域的文本內容時,會讀取ARIA活動區域。 這適用於幾乎所有屏幕閱讀器+瀏覽器的組合。 但是,如果需要閱讀或不閱讀,則頁面加載時存在的實時代理沒有明確規定;所以,這取決於屏幕閱讀器和瀏覽器。

知道了這一點,你可以觸發通過執行上述mentionned的兩兩件事之一的讀取,頁面加載後不久:

  • 創建一個新的生活區域出現在DOM
  • 更改文本現有的直播區域

請注意,如果您添加/更改現有元素的角色和/或aria-live屬性,它將不起作用。元素必須是新的或其文本必須有效更改。

-1

role=alertaria-live="assertive"實際上是相同的(警報意味着自信),雖然這應該不會造成問題本身。

也許您需要使用PHP輸出標記,然後使用JS將role="alert"屬性添加到它,以便在頁面完成加載後觸發它發言。

0

aria-live屬性本質上將dom元素標記爲將會接收更改的內容,並且這些更改應傳遞給用戶。

role =「alert」屬性實現了類似的通知,但各種屏幕閱讀器的解釋不同。當使用role =「alert」時,它有一個隱含的aria-live =「assertive」,所以你不需要兩者。

aria-live元素應該在頁面加載時位於DOM中,並且應根據需要添加要讀取的內容。屏幕閱讀器不會總是解析頁面以獲取其他元素,因此不會被公佈。

Chrome vox將不斷解析並提取,JAWS通常會選擇它,Voiceover和Talkback通常不會以我的體驗。配音和對講按預期工作很大程度上取決於使用正確的瀏覽器。

QuenticC大部分都是正確的,但是當它們存在於初始頁面源中,然後內容稍後添加時,aria-live =「assertive」通告最可靠地工作。當作爲一個新元素注入頁面時,role =「alert」(通常)效果最好。