「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > iPhone と Android で JavaScript を使用してユーザーの指のスワイプを検出するにはどうすればよいですか?

iPhone と Android で JavaScript を使用してユーザーの指のスワイプを検出するにはどうすればよいですか?

2024 年 11 月 15 日に公開
ブラウズ:483

How to Detect User Finger Swipes with JavaScript on iPhone and Android?

iPhone および Android の JavaScript で指のスワイプを検出する方法

モバイル フレンドリーな Web アプリケーションを開発する場合、指のスワイプなどのユーザー ジェスチャを検出する直感的で応答性の高いインターフェイスを作成するためには非常に重要です。このガイドでは、JavaScript を使用して iPhone と Android デバイスの両方で指のスワイプを検出できるようにする包括的なソリューションを提供します。

指のスワイプを検出するには、JavaScript のタッチ イベント リスナーを利用します。開始するためのサンプル コード スニペットを次に示します。

document.addEventListener('touchstart', handleTouchStart, false);
document.addEventListener('touchmove', handleTouchMove, false);

var xDown = null;
var yDown = null;

function getTouches(evt) {
  return evt.touches || evt.originalEvent.touches;
}

function handleTouchStart(evt) {
  const firstTouch = getTouches(evt)[0];
  xDown = firstTouch.clientX;
  yDown = firstTouch.clientY;
}

function handleTouchMove(evt) {
  if (!xDown || !yDown) {
    return;
  }

  var xUp = evt.touches[0].clientX;
  var yUp = evt.touches[0].clientY;

  var xDiff = xDown - xUp;
  var yDiff = yDown - yUp;

  if (Math.abs(xDiff) > Math.abs(yDiff)) { /*most significant*/
    if (xDiff > 0) {
      /* right swipe */
    } else {
      /* left swipe */
    }
  } else {
    if (yDiff > 0) {
      /* down swipe */
    } else {
      /* up swipe */
    }
  }
  /* reset values */
  xDown = null;
  yDown = null;
}

このコード スニペットは、「touchstart」イベントと「touchmove」イベントをリッスンし、最初のタッチ位置と移動中の更新された位置をキャプチャします。 x と y の差を比較することで、スワイプの方向を決定できます。右、左、上、下のスワイプのいずれであっても、このコードは指のスワイプを検出するための堅牢なソリューションを提供します。

このアプローチは、Android デバイスで効果的に動作することがテストおよび検証されています。これを JavaScript コードベースに組み込むことで、流動的でジェスチャー主導のインタラクションでユーザーを喜ばせるモバイルファーストの Web エクスペリエンスを作成できます。

リリースステートメント この記事は次の場所に転載されています: 1729335143 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3