2

私は最近プロジェクトに取り組んでおり、今までクロムデバッガーモバイルエミュレーターを使用してきました。これは、マウスでタッチとドラッグ動作をシミュレートできることを意味します。残念ながら、マウスが 1 つしかないため、両方を同時に行うことはできませんでした。

私が取り組んでいるプロジェクトでは、2 つの半ページ サイズの DOM 要素がページに追加されます。左側には touchmove イベント リスナーが関連付けられており、右側には touchstart イベント リスナーが関連付けられています。彼らは両方とも泳いで働いています。

しかし今夜、私は自分のプロジェクトをオンラインにアップロードしていくつかのことをテストし、iPad で開いたところ、一度に 1 つのアクションしか実行できないことがわかりました。ページは、左側で touchmoved している間、右側の touchstart イベントを検出できませんでした。同様に、右側をタップしている間、左側で touchmove イベントを検出できませんでした。

誰かが前にこのようなことをしましたか? 別々の DOM 要素で異なる一連のタッチを検出したいですか?

コード スニペットはここに含めるには少し大きいですが、github リポジトリへのリンクは次のとおりです: https://github.com/matthewolsson/JoyShtick

4

1 に答える 1

1

DOM 要素は単一の touches 配列を共有します。このテスト フェーズの前に、タッチ リスナーが適用された個々の DOM 要素には、関連するタッチの独自の配列があると想定していました。これで、リスナーに関係なく、ページ上のすべての要素が、ページ上のすべての現在のタッチを格納する 1 つの特異な touches 配列に寄与することがわかりました。

これを知っているので、targetTouchesタッチリストを使用して状況を修正しました。リンクは良い要約を提供しますが、基本は、これは最初のタッチが始まったDOM要素内で発生するタッチのみによって取り込まれる単一のタッチ配列です.

このリストのすばらしい説明は、ここにあります ~ ( stackoverflow.com/questions/7056026/variation-of-e-touches-e-targettouches-and-e-changedtouches )。最後になりましたが、W3C には、タッチ イベントとそのすべての機能に関する非常に詳細なページがあります。

于 2014-10-22T06:42:01.990 に答える