2016-07-26 4 views
1

React-A11yは私のModalで 'tabIndex'と 'role'について叫んでいます。私のモーダルは、次のようになります。React-Bootstrapモーダルのアクセシビリティに関する警告Re​​act-A11y

<Modal 
     aria-label="..." 
     tabIndex={-1} 
     role="Dialog" 
     show={this.state.showInfo} 
     onHide={this.closeInfo.bind(this)} > 
     <Modal.Header tabIndex={9} role="Dialog" closeButton> 
      <Modal.Title tabIndex={-1} role="Dialog">...</Modal.Title> 
     </Modal.Header> 
     <Modal.Body tabIndex={-1} role="Dialog"> 
      ... 
     </Modal.Body> 
    </Modal> 

あなたは上から見ることができるように、私はすべての要素のtabindexと役割を持っていますが、私は、私が見つけたプラグインを反応させるのチェックアウト時にA11yはモーダルの子供で叫んされていることをそのIアクセスすることはできません。

React plugin showing the child Modal

Iが反応-アクセス可能なモーダルのような他の修飾のモーダルを使用することはできませんしています。だから私はこの警告を取り除くために周りに行くための方法はありますか?ありがとう

+0

Tabindexは良い習慣ではありません、負のtabindexは要素をエスケープします。 Positive tabindexがエレメンツの自然順序に影響を与えることがある場合があります。望む順序で要素を編成し、このプロパティを避ける方がよい場合もあります。 –

答えて

0

トップエレメントが正しいです。即時の子供divrole="document"といいえtabIndexを持つ必要があります。実際には、ルート要素(ダイアログボックス)にはtabIndex="-1"が必要です。その他の役割はすべて削除する必要があります。

タブインデックスは、タブの順序に影響します。 0に設定すると、その要素はタブでフォーカスを受け取ることができます。私は可能ならばこれを避けるでしょう。ブラウザはインタラクティブな要素に焦点を当てることができます。フォーカスを受けたい要素をアンカーなどでラップすることを検討してください。

肯定的なtabindexはいいえです。完全にタブ順序を駄目にする。

タブインデックスは-1実際に罰金ですが、その要素は、だからあなたのダイアログがプログラム的にフォーカスを受け取ると、ちょうど残りのための自然なタブ順序を許可JS

[Element].focus(); 

経由でプログラム的にフォーカスを受け取ることになっている場合のみです。

注:ユーザーがモーダルを閉じるまで、モーダルでフォーカスをトラップします。次に、モーダルトリガー(アンカーまたはボタン、私はアンカーが好きです)にフォーカスを戻します

+0

どのようにモーダルにフォーカスをトラップしますか?私はReactモーダルコンテンツがスクリーンリーダー(JAWS)によって読み取られていない同様の問題を抱えています – Sara

+0

このhttps://www.marcozehe.de/2015/02/05/advanced-aria-tip-2を読んでくださいアクセス可能なモーダルダイアログ/ – Tamb

関連する問題