簡體   English   中英

詠嘆調和JAWS

[英]aria-live and JAWS

我正試圖讓一個詠嘆調生活區域與JAWS 11和IE8一起正常工作。

使用下面的代碼,我可以讓JAWS在單擊按鈕時宣布新值,但行為不是我所期望的。

這個例子的JSFiddle

<!DOCTYPE html>
<html>
<head></head>
<body>
    <button onclick="document.getElementById('statusbar').innerHTML = parseInt(document.getElementById('statusbar').innerHTML) + 1">Update</button>
    <div id="statusbar" aria-live="polite">0</div>
</body>
</html>

使用我的JAWS11 / IE8配置,每按一下按鈕,我聽到:

Click number  HTML Value (after click)  JAWS says
------------  ------------------------- ---------
1             1                         "Update button 0"
2             2                         "1"
3             3                         "2"

問題,我的問題是: 如何讓JAWS公布aria-live區域的當前值,而不是aria-live區域的先前值?

我也對其他屏幕閱讀器如何處理這個功能感興趣。

你的代碼是正確的。 顯然,已經發現了“落后1”。 從鏈接看起來好像使用aria-atomic="true"可以解決問題。 但是,給定的示例在IE9和Firefox 可以正常工作。

如果您還沒有偶然發現它們,請查看codetalksaccessibleculture.org上的測試用例 需要注意很多微妙的差異。 測試失敗時不要感到驚訝! 在過去一年左右的時間里,我遇到了一些可能對你有幫助的(不合適的)技巧。

方法1: role="alert"

alert角色應該等同於aria-live="assertive" ,但舊版本的JAWS沒有正確處理它。 查看2011年2月的這些示例 ,其中指出:

如果您希望在IE7或IE8中支持JAWS 10,最好使用role =“alert”和aria-live =“assertive”來加倍警報。 雖然這有點多余,因為根據定義,警報角色將被處理為一個自信的實時區域,這樣做可以讓JAWS 10自動在這兩個瀏覽器中公布更新的警報內容。

Firefox4 +和IE9都不需要這個。 但它會是這樣的:

<div id="statusbar" role="alert" aria-live="assertive">
  Contents will be spoken when changed
</div>

方法2:集中強迫黑客攻擊

通過動態創建DOM元素並強制關注它,您可以“欺騙”大多數屏幕閱讀器閱讀內容。 它是hackish,但有效......而且有點是Create和Focus示例的重點 簡化,您可以這樣做:

<div id="statusbar" role="alert" tabindex="-1"></div>

$('#statusbar')
  .clear()
  .append('<div>' + newString + '</div>')
  .children().first().focus()
;

僅隱藏/顯示內容實際上在大多數情況下工作得相當好。 但是, VoiceOver的重點在於元素,並且在再次顯示時不會說出其內容。 因此,從DOM中刪除它似乎是目前最簡單的方法。 我不喜歡它,但事情就是這樣。

如果您使用的是JAWS,我認為您還需要配置默認模式; 因為屏幕閱讀器具有“只讀”模式。 這個問題可以通過印刷機解決:

(Insert + z)打開/關閉只讀屏幕閱讀器。

http://www.mozilla.org/access/qa/win-webcontent-jaws.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM