1

活區域是讀取`詠歎調-live`區域內去除DOM節點的,我做的另一個變化:JAWS只能在IE

document.getElementById("abc").innerHTML="<span>Done</span>"; 

JAWS在Firefox中沒有問題,同時讀取「處理」和「完成」。但IE讀取「處理刪除處理完成」

據我所知,我用一個新的<span>替換<span>。但是,我如何讓JAWS忽略刪除更新?

回答

2

我在IE中成功擊敗這個bug的唯一方法是隱藏被刪除的元素,添加新元素,然後刪除隱藏的元素。

+0

謝謝!這很有幫助。我看到只隱藏以前的跨度就足夠了。我不需要刪除它,因爲我用我的新內容替換了整個innerHTML(完成) – KannarKK

+0

您提供的兩個文件都不使用此技術。第一個不隱藏任何東西。第二個使用不同的區域來處理源代碼中提到的另一個問題:*「這是爲了規避瀏覽器中的錯誤,如果這些錯誤太重複,將會停止宣告對同一個div的更新。」* – Adam

+1

您是正確的,示例不會實施這種技術,但正如@KannarKK所證實的那樣,該技術確實解決了問題 – unobf

-1

要了解IE中的這個錯誤,您必須查看aria-relevant屬性的文檔,該屬性指定您希望屏幕閱讀器通知哪些更改。

請參閱Microsoft文檔中的以下頁面:aria-relevant attribute

在你的情況下,IE認爲(錯誤地),你正在做一個文本更新(因爲使用的innerHTML這被認爲是一個字符串),所以它會通知刪除和添加:

更新公佈僅作爲添加節點,或文本添加或刪除

該解決方案應該添加或刪除使用addChild()removeChild()功能。

+1

aria-relevant默認設置爲添加。這是IE – unobf

+1

中的一個錯誤下面是指定默認值(添加文本)的地方http://www.w3.org/TR/wai-aria/states_and_properties#aria-relevant – unobf

+0

我沒有看到這一點。如果'詠歎調相關'被默認設置爲'添加',那麼顯然刪除將不會被公佈。指向MSDN文檔已經指定的「附加文本」的文檔不會給出任何額外的信息。這裏的錯誤是Internet Explorer將對innerHTML的調用視爲文本修改。在jQuery中使用addChild()和removeChild()或append()會給你預期的結果。 – Adam