2017-11-02 5 views
0

ダイアログ内でフォーカスをロックする機能があります。アクセシビリティ - フォーカスロックJAWSを使用しているときに矢印キーでブレークする

<div role="dialog" aria-label="test dialog"> 
    <input type="text" id="a"/><br /> 
    <input type="text" id="b"/><br /> 
    <input type="text" id="c"/><br /> 
    <input type="text" id="d"/><br /> 
    <button id="buttonA">a</button> 
    <button id="buttonB">b</button> 
    <button id="buttonC">c</button> 
</div> 

タブ/シフト]タブを使用している場合、それは正常に動作しますが、今、私はJAWSで自分のコードをテストし始めた、と私は矢印キーの動作が異なることがわかります。

ロックダイアログがこのバイオリンでロジックに似たものである: https://jsfiddle.net/zw6w5gx2/

私は「もし」ステートメントに矢印のキーコードを追加してみましたが、私はイベントがために解雇されていないことに気づいたよりも、これらのキー。

ダイアログにはrole = dialogがあり、NVDAを使用しているときに矢印キーを通常の動作に戻すだけで十分でしたが、JAWSでは動作しません。

role = applicationを使用するとすべてがうまくいくことがわかりましたが、ここで必要なものではないのでこの役割を使用したくありません。

アイデア?

答えて

1

申し訳ありませんが、あなたがここでやっていることは、悪い習慣と同時に過度のコードです。
まず、JAWSの最近のバージョンには、現在のダイアログで仮想カーソルを制限する機能が組み込まれているので、この機能を再実装する必要はありません。
第2に、ユーザーを制限しないでください。フォーカスをプログラム的にロックすると、スクリーンリーダーのユーザーにとって、これは想像上の手順に似ています。アクションでは、ダイアログを除き、突然すべてのモニターを暗くします。これは受け入れられないため、JAWSはあなたにこの能力を与えません。
第3に、「Tabを押して具体的な入力にする」という効果を得るには、適切なtabindex属性を指定すれば、すべてのTab/Shift + Tabの動きが期待通りになります。
Webページ上のJAWSは、仮想カーソルと呼ばれるもので動作するということです。それは、視覚障害のあるユーザーが、文字(つまり、hは見出しでナビゲート、bはボタンなど)を使用してページをナビゲートすることができます。それで、あなたはそのような奇妙なことを見ているのです(最初の一見(動作。
しかし、もしあなたが現在行っているこれらのことを絶対にやる必要があるならば、あなたはこれを行う権利があります。 role="application"はあなたの親友です:したがって、ユーザーは彼/彼女のキーが期待どおりに動作しないことを間違いなく知っていますが、これは開発者が作ったので正常です。

関連する問題