2017-03-08 1 views
3

私はangular2アプリケーションを持っており、ネストされたDIVのARIA-LABElにいくつかの動的テキストをバインドしています。しかし、私がJAWSリーダーを使ってページ上にDIVを配置すると、割り当てられたテキストが読み込まれません。これは私が読もうとしているテキストです - attr.aria-label = "{{productDetails?ProductName}}の製品詳細「私はこのdiv要素に向かうの役割を割り当て与える場合もDIV ARIA-LABElがJAWSによって読まれていない

は、それがダイナミックテキストを読み取りますが、接頭辞はありません 『テキストの前』の商品詳細を

<div [ngClass]="getDescClass()" class="prdDetails-div" aria-label="some text"> 
<div autofocus attr.aria-label="Product details for {{productDetails?.ProductName}}" class="productDetails-name" style="cursor:default!important" role="heading" >{{productDetails?.ProductName}} </div> 
     <div autofocus class="products-result-compare"> 
      <!--{{getDescription(productDetails?.Description)}}--> 
      Small description 
     </div> 
+0

また、このdivに見出しの役割を割り当てると、動的テキストは読み込まれますが、テキストの前には「Product details for」という接頭辞が付きません。 – namrata

+0

ここで何をしようとしていますか?一日の終わりに何を読みたいですか?現在の実装では、aria-labelは一般的なテキスト置換メカニズムとして動作しません。これは、自然にラベルを取得する要素で使用すると効果的ですが、tabindexまたは特定のロールが指定されていない限り、他のタイプの要素(DIV、SPAN)で動作する場合と動作しない場合があります。 – BrendanMcK

+0

お返事ありがとうございました。私はUIとアクセシビリティにかなり新しいです。私はdivとtagのaria-labelsが読まれていないことに気づいていませんでした。私のシナリオはこれです.DIVにテキストがあります。 (テキストを "DELL"としましょう)。しかし、私はスクリーンリーダーに "Product Name is DELL"のようにそれを読ませたい。基本的には、私はUIの中ではなく、スピーチリーダーのための "Product Name is"の接頭辞を付けたいと思います。私はこれらのDIVのtabindexを指定したくありません。 – namrata

答えて

5

あなたの説明は、詳細や作業を欠いたとえば、私が提供できるソリューションを提供しようとする代わりに、aria-label<div>でも<span>でも動作しません。

<div>および<span>は、目印もインタラクティブなコンテンツでもありません。 aria-labelはスクリーンリーダーで読むことはできません(そうです)。

使用することを知らず、私は役立つかもしれない2件の提案があります。

  1. を(それはコントロールのテキストを上書きします知っている)コントロール上で直接aria-labelを置きます。

  2. スクリーンリーダーを使用している場合は、オフスクリーンテキストを使用してください。

オフスクリーン技術を使用してください:

<div class="sr-only"> 
Here be redundant or extraneous content 
</div> 

CSSは(あまりにもRTL言語を占める)のようになります。

.SRonly { 
    position: absolute !important; 
    clip: rect(1px 1px 1px 1px); /* IE6, IE7 */ 
    clip: rect(1px, 1px, 1px, 1px); 
    top: auto; 
    left: -9999px; 
    width: 1px; 
    height: 1px; 
    overflow: hidden; 
} 

html[dir=rtl] .SRonly { 
    left: inherit; 
    left: unset; 
    right: -9999px; 
} 

There are other techniquesが、その価値はあなたに依存します視聴者とその技術プロファイル

autofocusをご利用の場合は<div>となります。あなたが対話的なコントロール(ボタンのようなもの)としてそれらを使用していないことを願っています。理想的にはnever use a div as interactive content

+0

ありがとうございます。私はUIとアクセシビリティにかなり新しいです。私はdivとtagのaria-labelsが読まれていないことに気づいていませんでした。私のシナリオはこれです.DIVにテキストがあります。 (テキストを "DELL"としましょう)。しかし、私はスクリーンリーダーに "Product Name is DELL"のようにそれを読ませたい。基本的には、私はUIの中ではなく、スピーチリーダーのための "Product Name is"の接頭辞を付けたいと思います。私はあなたが上記のアプローチを使用してみました。それは動作するようです。しかし、私はちょうどこれがこの問題を処理する正しい方法であるかどうかチェックしたいと思っていましたか?あるいは、それに続く別のアプローチがありますか? – namrata

+1

"Products"という見出しがあるように、ページ構造や周囲のコンテンツからコンテキストがわからない場合は、「The product name is」の追加について心配することはありません。多くの善意の努力によって、ページをスクリーンリーダーユーザーにとってはあまりにも冗長にしてしまいます。要するに、これはあなたが解決する必要がある問題ではないかもしれません。 – aardrian

関連する問題