2017-02-09 6 views
0

コンテキストは、異なる機能のためにアプリケーションのユーザー動作をトラッキングすることです。HTMLの見出しはNVDAによってクリック可能と見なされます

我々は myFunctionalityを言う カスタム角度ディレクティブを作成し、今は この内のすべてのクリックイベントを追跡し、 functionality-によってそれらを分類することができるよう、次のようにこのディレクティブにHTMLの部分をラップしている。このため

特定の機能の使用状況を追跡するに名前を付ける - このディレクティブ内

<myFunctionality functionality-name="Login"> 
<!--HTML of this functionality--> 
</myFunctionality> 

<myFunctionality functionality-name="RegisterUser"> 
<!--HTML of this functionality--> 
</myFunctionality> 

、我々はclickイベントをキャプチャし、それに応じてログに記録するイベントハンドラを添付しています。

.directive('myFeature', [function() { 
    return { 
     restrict: 'E', 
     link: function(scope, element, attrs) { 

      //more code 

      element.on('click.myFeature', '*:not(select, :radio, :checkbox)', function(event) { 
       logEventDetails(event); 
      }); 

      //more code 

     }]) 

これは私がNVDAスクリーンリーダーを使って自分のページを読んだときことを除いて、美しく、作業しています。 NVDAは、heading要素をクリック可能として読み取ります。この見出しについては、例えば -

<h1> Test Heading </h1> 

NVDA読み取り:

テスト1

Iはまた、このような何か、を使用しようとしている(バージョンのさまざまなクリック可能なレベルを見出し見出し)しかしそれは働かなかった -

$(':header').off('click.myFeature'); 

TL; DR

次のサンプルHTMLを検討してください。ここでclickdivに関連付けられ、h1には関連付けられません。しかし、スクリーンリーダーは、見出し要素をクリック可能な形で読み取るように機能します。

<html> 
<body> 
    <div onclick="alert('Hello from Div!')"> 
     <h1>Test Heading</h1> 
    </div> 
</body> 
</html> 

NVDAがクリックできないイベントをクリック可能な状態で読み取るのを防ぐ方法を教えてください。

答えて

0
<div onclick="alert('Hello from Div!')"> 
    <h1>Test Heading</h1> 
</div> 

どのようにクリッカブルなどの非クリッカブルイベントを読んでからNVDAを防ぐことができますか?

あなたの見出しは、クリック可能な要素の中にあるため、クリック可能です。

クリック可能な要素の外側に配置するだけです。

+0

お返事ありがとうございます、ええ、私はこれが動作する方法だと思います。親要素でクリックがクリックされたときにクリックできないことが予想されていました:(アプリケーション設計では、コントロールの位置を変更できません。 – Yogi

+0

私は同じ問題が発生しましたタグ付けされたタグに 'tabindex =" - 1 "'を置くと、NVDAが "clickable"というアナウンスを聞くことになるということを、Adobe Dynamic Tag Management(DTM)あなたは主な開発者の1人がその動作を説明する[NVDAの問題についてのディスカッション](https://github.com/nvaccess/nvda/issues/5481#issuecomment-241574110)を読むことができます。私はまた、https://github.com/nvaccess/nvda/issues/6639でNVDAのオープンな問題を抱えています –

関連する問題