2012-03-20 8 views
0

タッチイベントを使用してJavascriptでスワイプからのクリックを区別しようとしています。私は知っている、タッチイベントオブジェクトのプロパティは、 'touchend'イベントの違いを判断するために検査することができますか、またはタッチスタートまたはタッチとタッチモーブイベントの両方を聞く必要がありますか?私はDOMに追加する必要があるイベントリスナーの数を最小限に抑えようとしており、単一のイベントを観察してこれを行うことが可能かどうか疑問に思っていますか?具体的には、iOS上でWebkitを見ています。Javascript Touch Object

答えて

2

クリックイベントにまったくバインドしないでください。これは、タッチイベントの収集よりもはるかに遅く応答します。

スワイプを確認するには、タッチスタートとトゥーチンドイベントを待ち受ける必要があります。そのイベントが発生したときに何かをする予定がない限り、touchmoveについて心配しないでください。

タッチスタートイベントでは、イベントのx/y位置を記録する必要があります。 touchendイベントで、同じことをやり直してください。あなたが必要とするのはある種の閾値なので、x1-x2とy1-y2の差を計算すると、それがスワイプかどうかを判断できます。

アップルはここでtouchmoveに関連するメタアルゴリズムを提供しますhttp://developer.apple.com/library/ios/#DOCUMENTATION/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html。そのページで「スワイプを特定」を検索すると、そのスワイプを見つけることができます。

私は個人的にtouchmoveを使用する必要はなく、私が上記の技術をうまく使っています。しかしどちらかが有効なアプローチなので、最も効果的なものを調査する必要があります。

+0

ご回答ありがとうございます。私はこれをコード化しました。ちょうどあなたが提案したようにtouchstartとtouchendを使って、そしてリスナーをDOMの上位に適用して、ページレベルでの各イベントの1つのために「クリック」できる個々のコンポーネントごとにイベントを追加しません。 – Purpletoucan