活區域是讀取`詠歎調-live`區域內去除DOM節點的,我做的另一個變化:JAWS只能在IE
document.getElementById("abc").innerHTML="<span>Done</span>";
JAWS在Firefox中沒有問題,同時讀取「處理」和「完成」。但IE讀取「處理刪除處理完成」
據我所知,我用一個新的<span>
替換<span>
。但是,我如何讓JAWS忽略刪除更新?
活區域是讀取`詠歎調-live`區域內去除DOM節點的,我做的另一個變化:JAWS只能在IE
document.getElementById("abc").innerHTML="<span>Done</span>";
JAWS在Firefox中沒有問題,同時讀取「處理」和「完成」。但IE讀取「處理刪除處理完成」
據我所知,我用一個新的<span>
替換<span>
。但是,我如何讓JAWS忽略刪除更新?
我在IE中成功擊敗這個bug的唯一方法是隱藏被刪除的元素,添加新元素,然後刪除隱藏的元素。
要了解IE中的這個錯誤,您必須查看aria-relevant
屬性的文檔,該屬性指定您希望屏幕閱讀器通知哪些更改。
請參閱Microsoft文檔中的以下頁面:aria-relevant attribute
在你的情況下,IE認爲(錯誤地),你正在做一個文本更新(因爲使用的innerHTML
這被認爲是一個字符串),所以它會通知刪除和添加:
更新公佈僅作爲添加節點,或文本添加或刪除。
該解決方案應該添加或刪除使用addChild()
和removeChild()
功能。
aria-relevant默認設置爲添加。這是IE – unobf
中的一個錯誤下面是指定默認值(添加文本)的地方http://www.w3.org/TR/wai-aria/states_and_properties#aria-relevant – unobf
我沒有看到這一點。如果'詠歎調相關'被默認設置爲'添加',那麼顯然刪除將不會被公佈。指向MSDN文檔已經指定的「附加文本」的文檔不會給出任何額外的信息。這裏的錯誤是Internet Explorer將對innerHTML的調用視爲文本修改。在jQuery中使用addChild()和removeChild()或append()會給你預期的結果。 – Adam
謝謝!這很有幫助。我看到只隱藏以前的跨度就足夠了。我不需要刪除它,因爲我用我的新內容替換了整個innerHTML(完成) – KannarKK
您提供的兩個文件都不使用此技術。第一個不隱藏任何東西。第二個使用不同的區域來處理源代碼中提到的另一個問題:*「這是爲了規避瀏覽器中的錯誤,如果這些錯誤太重複,將會停止宣告對同一個div的更新。」* – Adam
您是正確的,示例不會實施這種技術,但正如@KannarKK所證實的那樣,該技術確實解決了問題 – unobf