私は現在、レスポンシブデザインとモバイルファーストのアプローチに従って、ウェブサイトの再デザインに取り組んでいます。
タッチ対応デバイスでJSを使用してスワイプイベントを検出しようとしています。この目的のために、私は次のコードを使用しています。
document.addEventListener ('touchstart', function(event) {
//Get initial finger coords
}, false);
document.addEventListener ('touchmove', function(event) {
//Update final finger coords
}, false);
document.addEventListener ('touchend', function(event) {
//Compare initial and final coords, trigger swipe events if necessary
}, false);
このコードをiPad1、iPhone 4、およびAndroid 2.2.1を実行しているいくつかのデバイスでテストしました。画面上で指をドラッグすると、期待どおりの結果が得られます。touchmove
イベントは数回発生します(簡単に発生する可能性があります)。長いジェスチャーをするときは100に)。
この問題は、Android 2.3.3デバイス(Samsung Galaxy S2を使用しています)でテストすると発生します。ネイティブのブラウザを使用すると、touchmove
イベントの量は1つだけ(またはまれに2つ)に減少します。
私は何か間違ったことをしているのですか、それともそのように振る舞うことになっていますか?誰かが同じ問題を見つけましたか?touchmove
このバージョンのAndriodでは、イベントの動作に関するドキュメントを見つけることができませんでした。
ここでテストできます(タッチ対応デバイスを使用):http://jsfiddle.net/xs5BG/embedded/result/