本文へ移動
easeweb
ご相談
トピックを検索

タッチ画面のある端末ではタップでしか押せないボタン

ページがタッチ画面の有無を調べ、あればclickの代わりにtouchendだけを待つため、マウスでクリックしてもEnterキーを押しても何も起きない

WCAG 2.2
SC 2.5.6AAA· 2.1 で追加
必須とする規格
Section 508、EN 301 549、JIS X 8341-3 では必須ではない
問題あり 'ontouchstart' in window ? 'touchend' : 'click'
アクセシビリティの問題を示した図: 手の操作:タップでしか開かないのはなぜ?
01

問題

タッチ画面付きのノートパソコンやキーボードを付けたタブレットで、マウスやキーボードでは「絞り込み」を開けず、ChromeとEdgeでは音声でも開けない

02

試してみる

マウスで「絞り込み」を開いてから、TabキーとEnterキーでも開いてみましょう

このデモは、タッチ画面付きのノートパソコンで動くChromeやEdgeと同じように、タッチ画面がある端末として動きます。タッチ画面があれば、「絞り込み」をタップしても試してください。

問題あり 修正できますか?

問題タッチ画面があればtouchend

マグカップ 12件

再現デモです。「問題あり」は意図的にアクセシブルでない状態にしています。

03

修正方法

どの端末でもclickを待つ

修正前
問題タッチ画面があればtouchend
<button type="button" class="filters-toggle" aria-expanded="false" aria-controls="filters">  絞り込み</button><form id="filters" class="filters" hidden>  …</form>
問題点3点
  • タッチ画面付きのノートパソコンやキーボードを付けたタブレットでは 'ontouchstart' in window が真になり、ボタンは touchend だけを待ちます。
  • マウスのクリックでは touchend が発生しないため、「絞り込み」をクリックしても何も起きません。
  • EnterキーとSpaceキーはクリックでボタンを押すため、これらでも何も起きません。ChromeとEdgeでは、スクリーンリーダーと音声操作でも同じです。
修正後
修正どの端末でもclick
<button type="button" class="filters-toggle" aria-expanded="false" aria-controls="filters">  絞り込み</button><form id="filters" class="filters" hidden>  …</form>
修正の手順2ステップ
  1. タッチの判定を削除します。どの押し方を受け付けるかを、ページが決めることはなくなります。
  2. ボタン本来の click を待ちます。タップでは指を離したときに発生し、マウスのクリック、フォーカスしたボタンでのEnterキーとSpaceキー、スクリーンリーダー、音声操作でも発生します。どれを使ってもパネルが開き、いつでも持ち替えられます。

これで修正前の例は直り、2.5.6を満たします。ページに <meta name="viewport" content="width=device-width"> がある限り、タップの反応も遅くなりません。

この方法を選ぶ理由:まずHTMLの要素を使う

04

修正の確認

4項目

確認方法: タッチ、マウス、キーボード、音声入力、スクリーンリーダー

4件中0件を確認済み

OS、ブラウザー、支援技術のバージョン、ビルド、日付と、各手順の実際の結果を記録してください。共通のボタンやメニューのスクリプトを変更したら、もう一度確認します。

制限

これは出発点となる実装例で、すべてのアプリケーションでの動作を保証するものではありません。ここで扱うのは、タッチの判定で選んだリスナーです。タッチ端末で矢印ボタンを隠したカルーセルは、スワイプが唯一の方法になります。これはボタンで代われないピンチ・ドラッグ・傾きのジェスチャーで扱っています。マウスを見つけるとホバーで開くメニューや、本物のキーボードの代わりにページが押し付ける画面上のキーボードも、同じ達成基準を満たさないことがあり、別の確認が必要です。認められる制限もあります。タッチタイピングの練習ソフトはキーボードでの入力を求めてかまいません。それが教える内容そのものだからです。利用者が実際に使うタッチ画面付きのノートパソコンやタブレットで確認してください。

よくある問題を再現した学習用のサンプルです。実在のクライアントの診断結果ではありません。コードは出発点となる実装例のため、実際の製品でも確認してください。ここでは支援技術でのテスト結果は報告していません。

EaseWebのサービス

修正した問題を、次のリリースで再発させない

このガイドのような修正方法を、コーディングエージェントが従うルールと、CIのチェックに組み込みます。あわせて定期的に、キーボードとスクリーンリーダーで手動の再テストを行います。

サービス内容を見る