2011-08-02 7 views
12

私はJAWS 11とIE8で正しく動作するようにaria-live領域を取得しようとしています。aria-liveとJAWS

以下のコードを使用すると、ボタンがクリックされたときにJAWSに新しい値を通知させることができますが、動作は期待したとおりではありません。

JSFiddle of this example

<!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地域の現在価値ですか?

他のスクリーンリーダーがこの機能をどのように処理するかについても興味があります。

+0

同じ問題は、[このビデオを実証するARIA-ライブ](http://www.youtube.com/watch?v=9nZnTdSAkH0#t=3m8s)で発生していないようだ - おそらくそれは私の特定のセットアップと関係がありますか? –

答えて

12

コードは正しいです。どうやら、 "1の後ろ"はdiscoveredでした。このリンクから、aria-atomic="true"を使用して問題が解決するかのように見えます。ただし、の例では、IE9とFirefoxではが正常に動作します。

すでに遭遇していない場合は、codetalksaccessibleculture.orgでテストケースをチェックしてください。知っておくべき微妙な違いがたくさんあります。テストが失敗したときに驚かないでください!過去1年ほど、私はあなたに役立つかもしれない(不十分な)トリックを見つけました。

方法1:JAWSのrole="alert"

alert役割がaria-live="assertive"に相当supposed to beですが、古いバージョンでは適切に処理しませんでした。 2011年2月からthese examplesをチェックアウト、と述べている:あなたがすべてでIE7やIE8にJAWS 10をサポートするために探しているなら、それはおそらく最良の役割=「警告」とアリアの両方でアラートにまで倍増することである

-live = "assertive"です。定義上、アラートの役割は主張的なライブリージョンとして処理されるため、JAWS 10は更新されたアラートの内容を2つのブラウザに自動的にアナウンスすることができます。

Firefox4 +とIE9の両方がこれを必要としません。

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

方法2:しかし、それはこのようなものになるだろう注力動的に読み込むに、することができます「トリック」ほとんどのスクリーンリーダーをDOM要素を作成し、それにフォーカスを強制することにより

をハック強制内容それはハッキリですが、効果的です... Create and Focus例の要点です。単に、実際の代わりに内容を示す/隠し

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

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

はかなりよく、ほとんどの時間を動作します:簡体字、あなたはこのような何かを行うことができます。しかし、VoiceOverの要素は要素上に残っており、再び表示されるとその内容は話されません。したがって、これをDOMから削除することは、今のところ最も簡単な方法であるようです。私はそれが好きではありませんが、それは物事の状態です。

+0

偉大な答え、ありがとう! aria-live = "polite"とrole = "alert"を使うと、実際にはIE8とJAWS 11で現在の値が読み取られますが、現在の値は2度読み込まれます。

+0

@ダニエル、IE8のアップデートをありがとう。がんばろう! –

0

JAWSを使用している場合は、デフォルトモードを設定する必要もあると思います。スクリーンリーダーは「読み取り専用」モードであるためです。この問題は、読み取り専用のスクリーンリーダーをオン/オフするために、

(Insert + z)を押して解決できます。

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

関連する問題