2012-12-30 18 views
5

タッチスタートイベント中にタッチイベントが発生する理由を知っている人はいますか?これは2回目の回でしか起こりません。タッチスタート時に2回目のタッチが発生する

迅速なコードスニペット:

function touchstart (event) { 
    $(event.target).one('touchend', function() { 
     alert('fired'); 
    } 
} 

だから、これは発射された最初の時間は、それが正常に動作します。 2回目は、タッチスタート時に警告を発します。

http://jsfiddle.net/8SVFR/

編集:これが唯一の

+0

私たちは携帯電話のブラウザについて話していますか? Android 4.1ネイティブブラウザで正常に動作します。 –

+0

Android 4.1でもChromeとFirefox(モバイル)でも問題なく動作します。 –

+0

iPhoneで試しただけで、もう一度起動すると起動します – darylhedley

答えて

5

が判明iPhoneの問題である可能性がありよう

は、あらゆる種類の問題を引き起こしtouchendイベントで警告火災を持つことで...見えます。 「OK」をクリックすると、タッチスタートが起動されます。次に、要素をタッチすると、touchendが起動されます。幸いにも私は自分のコードをチェックするためにアラートを使用していました。

+0

は、この問題をデバッグするのに最後の夜を過ごしました。タッチエミュレーションを使用してChromeで正常に動作し、iphoneでコールバックを2回トリガーします。 – Paul

1

"touchend"ハンドラのコードをsetTimeoutに0msで入力するだけです。このように:

$(someElement).on("touchend", 
function(){ 
    setTimeout(function(){ 
    /*Your code*/ 
    }, 0); 
}); 
関連する問題