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

押した瞬間に実行され、キャンセルできないボタン

ボタンがpointerdownで処理を実行するため、誤って押したときもすぐに実行され、指を離す前にずらしても止められません。

WCAG 2.2
SC 2.5.2A· 2.1 で追加
必須とする規格
EN 301 549(EU)
問題あり addEventListener('pointerdown', addToBasket)
アクセシビリティの問題を示した図: 届く範囲・力:指をずらしたのに、なぜ追加されたの?
01

問題

押すボタンを間違えた人が、指を離す前にずらしても取り消せません。

02

試してみる

「カートに入れる」を押したままにして、いつ追加されるか見てください。次に、離す前にボタンの外へずらしてください。

ボタンは、触れたときではなく、離したときに決まります。その間があるから、押し間違えた人やスクロールしたかっただけの人も考え直せます。ショップの下の欄で、このボタンが待ってくれるか確かめてください。スマートフォンでは、ボタンに指を置いたまま一覧をスクロールしてみてください。

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

キッチンリネン カート(0)
  • リネンのティータオル
  • コットンのエプロン
  • オークのまな板
  • ホーローのマグ
ほとんどのボタンでは、触れただけではまだ決定ではなく、指を離したときに決まります。それまでは、押し間違えても指をずらせば取り消せます。ボタンを押したままにして、このショップがいつ決めるか見てください。

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

03

修正方法

処理をclickに移し、押したときは押された見た目を示すだけにします。

  1. 1処理は押したときではなく、要素の上で離したときに実行する。
  2. 2離す前に外へずらせば取り消せ、スクロールは押下として扱わない。
  3. 3押したときのリスナーは、押下の見た目、フォーカスの維持、ドラッグの開始に使ってよいが、処理を完了させない。
修正前 Pointerdownで実行する処理
<button type="button" class="add">カートに入れる</button>
修正後 Clickで実行する処理
<button type="button" class="add">カートに入れる</button>

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

AI コーディングアシスタントで修正しますか? このガイドを Markdown で取得

04

修正の確認

5つの確認

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

5件中0件を確認済み

OS、ブラウザーと支援技術のバージョン、ビルド、実施日、各手順の実際の結果を記録してください。共通のボタンやカードのコンポーネントを変更した際は、再度確認します。

制限

このサンプルは、どのアプリケーションでも同じ結果になることを保証するものではありません。画面上のキーボードのキーや楽器のように、押した瞬間に動くこと自体が目的の操作もあり、WCAGはそれを不可欠なものとして扱います。小さなボタンは、そもそも押し損ねることもあります。大きさについては「ターゲットサイズが足りない、詰まったボタン」で説明しています。マウスだけでなく、実際のタッチ端末でも操作全体を確認してください。

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

コードを更新しても、使いやすさを保つために

ガイドの内容を、コーディングエージェントやCIで使える開発ルールにまとめます。更新後は、キーボードとスクリーンリーダーで再テストし、問題が再発していないか確認します。

再テストの進め方