2017-10-06 7 views
2

アクセシビリティの問題を検出するために、アプリケーションのWAVEスキャンを行っています。私が今見ているのは、「デバイス依存のイベントハンドラ」です。これらはasp:Menuコントロールに表示されます。関連メッセージと思われるものは、「onmouseoverイベントですが、onfocusイベントではありません」と表示されます。私は、ページのソースを見てみると、私は、生成されたHTMLのように見ています:アクセシビリティasp.netメニューのWAVEスキャンでエラーが表示される

<td onmouseover="Menu_HoverStatic(this)" onmouseout="Menu_Unhover(this)" onkeyup="Menu_Key(event)" id="ctl00_MainMenun4"> 

をこれのonmouseoverハンドラと同じ処理を行いONFOCUSイベントハンドラを必要としていることを私に示唆しています。私はこの前提で訂正しますか?これを生成するasp.netを取得する方法はありますか/これを手動で注入する方法を見なければなりませんか?後者なら、何か提案はありますか?

ありがとうございました!

答えて

0

回答が見つかりました。 this MS articleを参照してください。 asp:Menuコントロールでは、MenuのRenderingModeをMenuRenderingMode.Listに設定し、web.config controlRenderingCompatibilityVersion = "4.0"のpages要素を変更する必要がありました。

0

onfocusイベントハンドラを追加するだけでは、テーブルセルをアクセス可能にするには不十分です。表のセルはフォーカス可能な要素ではありません。 (Focusable elementsは通常href属性を持つa要素、href属性を持つlink要素、buttoninputtypeは「隠し」ではありません、selecttextareaです。)

フォーカス可能な他の要素を作るために、あなたが設定する必要がありますtabindex attributeを "0"にする。これにより、例のtd要素がタブの順序で配置され、キーボードで到達可能になります。キーボードフォーカスを受け取ることができる場合は、リスナーが待機するフォーカスイベントも発生させることができます。

+0

ありがとうございます。あなたが提案するものは、WAVEの提案の一部です。私はasp:Menu要素にtabindex = "0"を追加することはできますが、違いはありません。ページソースはtabindexを取得せず、WAVEが示すエラーも変更しません。個々のasp:MenuItem要素はtabindexを取らないので、そこに追加することはできません。 –

0
<td onmouseover="Menu_HoverStatic(this)" onmouseout="Menu_Unhover(this)" onkeyup="Menu_Key(event)" id="ctl00_MainMenun4"> 

これのonmouseoverハンドラと同じことONFOCUSイベントハンドラを必要としていることを私に示唆しています。私はこの前提で訂正しますか?それはたとえば、あなたのtd

の内側にあるかに依存し、この

を生成するためにasp.netを取得する方法がありますが、あなたは完全に持つことができます。

<td onmouseover="func_somewhat()"><a href="example.htm">Click</a></td> 

が上onfocustabindexを置きますtd要素では、要素自体にタブ可能な要素が含まれているため、アクセシビリティの問題が発生します。

また、このコードには、キーボードの許可で内側のリンクを選択して、期待していることを達成できる限り、簡単にアクセスできます。

td内部の要素は任意のフォーカス可能な要素を持っていない場合は、あなたがtd自体にonfocusイベントハンドラを追加することができますが、より多くの条件を満足する必要があります。

  • tdがフォーカス可能でなければなりません(tabindex
  • tdリード作用
  • table SHに応じrole=button又はrole=linkであると示されるべきですouldはプレゼンテーションに使用されている場合はpresentationロールを持っています(ここでは明らかです)
関連する問題