自作ウィジェットをアクセシブルにせよ!

2008年9月25日(木)
志田 裕樹

キーボード操作が可能なタブウィジェットの解説

 ここからは、サンプルをキーボードで操作可能にするための実装方法を見ていきます。先に、図3を確認してください。このサンプルでは、左キー、右キー、タブキーによる操作が可能になっています。

 それでは、まずタブキーによる操作の実現方法から確認していきましょう。

 まず、に「tabindex="-1"」を指定します。こうすることで、TABキーを押してもにフォーカスがあたらないようになります。



 次にタブが選択された際(tabsselectイベント(
http://docs.jquery.com/UI/Tabs#Events)発生時)に、下記のようにして、全タブをTABキーでフォーカスがあたらないようにします。

$("span[role='tab']").attr('tabindex', '-1');

 フォーカスがあたらないようにした後、下記のように、選択されたタブだけ、TABキーによるフォーカスを可能にし、フォーカスをあてています。

$(ui.tab).find('span').attr('tabindex', '0').focus();

 同様に、下記のようにして、すべてのタブ内コンテンツをTABキーでフォーカスがあたらないようにします。

$('.ui-tabs-panel').attr('tabindex', '-1');

 フォーカスがあたらないようにした後、下記で、選択されたタブのタブ内コンテンツだけ、TABキーによるフォーカスを可能にします。

$(ui.panel).attr('tabindex', '0');

 ここまでで、アクティブなタブとタブ内コンテンツを、TABキーや、Shiftキー + TABキーで行き来することができるようになります。

左右矢印キーによるタブの切り替えの解説

 次に、左右矢印キーによるアクティブなタブの切り替えの実現方法を確認していきましょう。

 下記のようにして、タブにフォーカスがあたっている状態で、左矢印キーが押されれた場合の処理を記述します。

$("span[role='tab']").bind('keydown', 'left', function(e){
…処理…
}

 左右矢印キーが押された時の処理内容は次のようになります。

1.現在アクティブなタブを判定
2.次にアクティブにすべきタブを決定
3.そのタブをアクティブ化

 下記のようにして、現在アクティブなタブを判定します。

if ($(e.target).text() == '野菜') {
} else if ($(e.target).text() == '肉') {
} else if($(e.target).text() == '果物') {}

 「野菜」がアクティブだった場合、次にアクティブにすべきタブを次のように指定しています。

if ($(e.target).text() == '野菜') {
target = $("a:contains('果物')").get(0);
}

 同様に、「肉」「果物」がアクティブだった場合の、次にアクティブにすべきタブについてもロジックを記述します。

 最後に、アクティブにすべきタブに対して、jQueryのclick()(http://docs.jquery.com/Events/click)メソッドでクリック動作を発生させてタブのアクティブ化を行います。

$(target).click();

 ここまでで、左右矢印キーを押すと、タブが切り替わるようになります。

 以上で、キーボード操作の実現し、アクセシブルなタブウィジェットが完成しました。

 ここまでのソースコード全体をダウンロードしたファイル「tab-3.html」で確認してみましょう。

 これまでWAI-ARIAの概要から実践的な構築まで4回にわたり連載をしてきました。紹介した、ロール、ステート、プロパティはごく一部のものですが、これまで解説してきた知識があれば、ほかのものもそれほど苦労なく理解できると思います。

株式会社アークウェブ
取締役 CTO。2004年1月より株式会社アークウェブの創業スタッフとして勤務。SEとしてさまざまなWebシステムの構築に従事。オープンソースコミュニティーZen Cart.JPにてコミッターの役割を務め、Zen Cart、Ajax、Ruby on Railsなどの記事執筆も行っている。http://www.ark-web.jp/

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています