2014-03-04 49 views
1

屏幕閱讀器將如何處理的情況下,你有aria-livearia-atomic另一個元素裏面有aria-livearia-atomic和含量的變化嵌套元素中的元素?如何屏幕閱讀器處理嵌套唱段,現場與詠歎調原子

它會讀取兩節,讀取嵌套節兩次?

HTML:

<div aria-live="polite" aria-atomic="true"> 
    Here is some text, <span>this itself may change</span>. It is a large section of the page 
    <div aria-live="polite" aria-atomic="true"> 
     This is another part of the page that may change, it is also large. <span>This part may change too</span> 
    </div> 
</div> 

我想問的原因是因爲我使用AngularJS做出一個需要符合ADA一個SPA。該網站有一個嵌套的佈局方案,頁面的內部部分將被更改而不更改外部部分,但外部部分可能會更改一個點。理想情況下,我希望只有內部部分在更改時才能被讀取。當外部部分改變時,它會讀取所有內容,一次。

+1

會不使用它變化基於特定的屏幕閱讀器的處理方式? – RacerNerd

+2

我曾希望會有某種標準,或者有人能夠注意到這種情況下不同流行的閱讀內容。 – TheSharpieOne

回答

1

對不起,它的API具體:

 
Table of document change scenarios and events to be fired in each API 

Scenario    MSAA + UIA Express event  MSAA + IAccessible2 event    ATK/AT-SPI event  Mac OS X Notification 
When text is removed EVENT_OBJECT_LIVEREGIONCHANGED IAccessible2: IA2_EVENT_TEXT_REMOVED text_changed::delete If in a live region, AXLiveRegionChanged 
When text is inserted EVENT_OBJECT_LIVEREGIONCHANGED IAccessible2: IA2_EVENT_TEXT_INSERTED text_changed::insert If in a live region, AXLiveRegionChanged 
When text is changed EVENT_OBJECT_LIVEREGIONCHANGED IAccessible2: IA2_EVENT_TEXT_REMOVE  text_changed::delete If in a live region, AXLiveRegionChanged 
                 and IA2_EVENT_TEXT_INSERTED    and text_changed::insert 

aria-atomic行爲建議:

用戶端應該檢查祖先元素的用於詠歎調原子= 「真」 的鏈。如果找到,用戶代理應該將RELATION_MEMBER_OF關係設置爲指向設置aria-atomic =「true」的祖先。

aria-live行爲,以及:

用戶代理應確保輔助技術,在工藝運行可接收節點的通知之前,去除被移除。這允許諸如屏幕閱讀器之類的輔助技術引用回被刪除的對應DOM節點。這對於清除重要的活動區域非常重要。例如,屏幕閱讀器會想要通知用戶另一個用戶已經離開聊天室。 MSAA中的事件將是EVENT_OBJECT_HIDE。對於ATK/AT-SPI,這將是children_changed :: remove。在Mac OS X中,事件是AXLiveRegionChanged。這還要求用戶代理在可訪問性API通知中提供唯一標識,以標識要刪除的唯一節點。

參考