2016-05-06 6 views
1

角度ルート(1.4.8)と角度材料を使用して角度(1.4.8)でSPAを取得しました任意の違い)。新しいルートがng-viewにロードされたときに間違った要素をターゲットにするタブイング(tabindex)

ユーザーがリンクをクリックして新しいルートにリダイレクトされるたびに、次のタブ位置は、tabindex="1"(または0、-1)のng-viewの要素にする必要があります。代わりに、新しいルートが読み込まれると、次のタブの位置はアプリのロゴとヘッダーメニュー[ng-viewの外に表示されます]です。

これは、ルートを変更するたびに、〜5つのリンクを飛び越えて目的の主要要素をターゲットにしなければならない非常に使い勝手の悪い操作性を作成します。これは、いくつかのルート/ビューにまたがるフォームウィザードを持っているので、特に私たちのアプリを吸う。

私はこれが最近、おそらく以前のバージョンから1.4.8へのアップグレード時に開始されたと思います。誰でもこれを経験していますか、それを解決する方法を提案していますか?私の解決策は、あなたの形で所望の要素にデフォルトのフォーカスを設定することです0

+1

あなたの心配がAODAの場合、これはおそらく新しい要素に到達することができるので、最小要件(最初は明確に定義されていません)を満たしている可能性があります。要素に手作業で焦点を当てることはできますが、実際にはこれを見ずに問題がどこにあるのかは分かりません – Huangism

+0

適切な属性を追加し、ロゴなどからtabindexを削除するタブインデックス指示を作成しないのはなぜですか? – OBender

答えて

0

私はこの記事でARIAとAngularJSの解決策を見つけました。この解決策は、Single page applications, AngularJS and accessibilityの実装に終わりました。

app.run(function setupRouteChangeHandlers ($rootScope) { 
    var bodyElement; 

    $rootScope.$on('$viewContentLoaded', setupTabIndexFocus); 

    //////////// 

    function setupTabIndexFocus() { 
    if (!bodyElement) bodyElement = $('body'); 
    bodyElement.find('md-content').attr('tabIndex', -1).focus(); 
    } 
}); 

各ビューにターゲットとすることができる(ただし、どの要素もターゲットにできる)ように、各ビューにはmd-content要素があります。ユーザーがタブをクリックすると、次のtabindexの位置はビュー内の要素になり、tabindex="1"となります。

ここでは最初のフォームフィールドを選択しないため、モバイルデバイスのキーボードはすぐに表示されません(モバイルデバイスの画面の半分がユーザーの目に触れる前に覆われます)ページ)。

0

にNG-ビューは新しいルートをレンダリングするたび

は、アクティブtabindexの位置を元に戻す必要があります。 'ng-autofocus'を試してみてください。

+0

角度材料には「md-autofocus」がありますが、それはページがロードされている間にモバイルデバイス上でキーボードが開くことを意味します。これは望ましくないと思います。私はこの[Angular ARIA Guide](http://simplyaccessible.com/article/spangular-accessibility/)の '$ viewContentLoaded'メソッドを使用して終了しました。 – ngDeveloper

+0

ああ、 "md-autofocus"はフォームフィールドとボタンでしか使えないと思うので、自分のソリューションを使い終わったのです。 – ngDeveloper

関連する問題