2016 年になり、ここ数年、多くのデバイスがタッチとマウスのような入力の両方を備えています。「タッチできない」は、「マウスオーバーできる」と判断する良い方法ではありません。ほんの数例を挙げると:
- Galaxy Note 携帯電話やタブレット (Android)、Microsoft Surface (Windows)、Wacom Cintiq (Mac/Windows/Android) などの「アクティブ ペン」デジタイザ デバイス、ペンがマウスのように機能し、「画面から約1cm離れたときに「エアホバー」
- タッチスクリーンと従来のラップトップのトラックパッドなどを備えた Windows ラップトップ / ハイブリッド
- どのPCにも接続でき、マウスで使用できるタッチスクリーンモニター
そのため、ユーザーが 1 分間ホバーできない場合、同じデバイスで、ページを更新せずに、Galaxy Note からペンを引き抜き、(発火しないと仮定して)インタラクションで突然ホバーを使用します。、そして彼らはそれがうまくいくことを期待しています。
ユーザーが a) 使用できるかどうか、および b) 現在マウスオーバーを便利に行えるデバイスを使用しているかどうかを知る必要がある場合は、次のようにします。
- mousemove をトリガーするカーソルが移動している場合に "has hover" 状態をアクティブにする
mousemove
イベントをドキュメントにバインドし(クラスを に追加するなど)、すぐにバインドを解除して、一度だけ発生するようにします。body
user-can-mouseover
body
touchstart
また、それを一時的に非アクティブ化するイベントとmousemove
それを再アクティブ化する をバインドしtouchend
て、タッチ時にマウス イベントをトリガーするブラウザー (Android と Windows では非常に一般的) で、通常のタッチ スクロールが をトリガーしないようにしmousemove
ます。
- イベントにこれらと
mousemove
イベントのバインドを解除させて、適切なハウスキーピングを行いますtouchstart
touchend
これにより、ユーザーがマウスのように動作する入力デバイスの使用を開始するたびに、「ホバー可能」状態がトリガーされます。
たとえば、ハイブリッド デバイスを使用すると、次のようになります。
- 最初に、ユーザーはタッチとスワイプを使用して Web を閲覧しています。
- 彼らはアプリケーションに到達し、それが何であるかを理解しながら、タッチを使用して上下にスワイプします。これまでのところ、「ホバーできる」状態はアクティブではありません。
- これは太い指が許す以上の精度が必要なケースの 1 つであると判断し、デジタイザー ペンを引き抜くか、マウスに手を伸ばします。
- これにより、終了しないタッチイベントが発生することなくカーソルがページ上を移動するため、「ホバー可能」条件がトリガーされます
...そして、マウスを備えた古い学校のデスクトップワークステーションを使用します。
- ページが読み込まれます。
- ユーザーが何かをしながらマウスを動かすと、すぐにマウス移動イベントがトリガーされます
- 「ホバー可能」状態はすぐにトリガーされます