モバイルブラウザでOntouchDownとデスクトップ/ラップトップでOnMousedownを処理しますか?
-
25-10-2019 - |
質問
「Click」イベント(一般的な意味で)に反応する必要があるA、HTML5キャンバスを使用してWebゲームアプリケーションを開発しています。
モバイルプラットフォーム(またはタッチ対応)では、OntouchDownに反応することを意味します。デスクトップ/ラップトッププラットフォーム(マウスまたはパッド付き)では、OnMousedownに反応することを意味します。
問題は、両方のイベントを処理すると、同じ「クリック」が両方のイベントが発射されることがあるため、二重のシグナリングが得られる場合があります。
それを処理するための最良の方法は何でしょうか?
現在、私が受け取った最初のタッチイベントでは、マウスイベントをオフにしますが、プラットフォームがタッチとマウスのクリックをサポートしている場合、それは少し重い手渡しである可能性があります(キーボード/パッド/マウスが添付されたAndroidタブレット)
タッチとクリックの間の遅延を測定してクリックを無視してタッチを無視してもうまく機能しません。ユーザーが高頻度でタッチ/クリックする可能性があるため、長すぎる遅延がダブルタップ/クリックを落とすことにつながり、短すぎる遅延は、時折二重信号が滑り落ちることを介して許可されます。
私はユーザーエージェントの検出を見ましたが、それは非常に脆弱で(そこにある多くのユーザーエージェント)、プラットフォームにTouch&Mouse/Padの両方がある場合は解決しません。
解決
たぶんあなたの提案の組み合わせ:
タッチとクリックの間の遅延を測定してクリックを無視してタッチを無視してもうまく機能しません。ユーザーが高頻度でタッチ/クリックする可能性があるため、長すぎる遅延がダブルタップ/クリックを落とすことにつながり、短すぎる遅延は、時折二重信号が滑り落ちます
タップのx、y座標を検出すると、誤検知が減少します。したがって、両方のイベント(タップ&クリック)が順番に発生している場合、同じ座標を取得した場合、それらは同じものとして処理されます。
または、マウスを使用したり、両方がサポートされている場合は、マウスを使用したり、デバイスにタッチしたい場合は、ユーザーを(何らかのオプション画面を介して)切り替えさせます。たとえば、警告メッセージを表示します you're on a touch device so we enabled touch events, if you're using a mouse please see options
またはそのようなもの。
ほとんどのユーザーは自動選択に満足しており、不幸な人は誰でもそれを変えることができます。