2012-03-22 8 views
5

私は現在、iPad用に最適化されたウェブページでオーバーフロー:スクロールを使用しています。スクロールするスワイプをタッチとして解釈していたので、スクロールするdiv内のアイテムのタッチイベントに苦労し始めました。スクロール完了イベントはなく、スクロールイベントはスクロールするたびに発生するため、スクロールイベントを検出して、一時的にタッチイベントを無効にするタイマーを設定しようとしました。しかし、私は、スクロールイベントは、ユーザがスクロールを開始するたびに発生することを発見しました。スクロールイベントは慣性スクロールでめったに発生しません。モバイルサファリの慣性スクロールのイベント

スクロールイベントが継続的に発生しているか、またはスクロールが現在発生していることを検出する他の方法はありますか?

OS Xでマウスを動かすと慣性スクロールが自動的に停止するので、クリックイベントを開始するにはマウスを動かす必要があるため、マウスを動かす必要があるため、Mobile Safariの慣性スクロールにのみ問題があります。紛争。あなたはまた、スクロールのためのタッチとタップのためのタッチの二重使用入力を持っていません。

答えて

3
<script type="text/javascript"> 
<!-- 
    document.addEventListener("touchmove", ScrollStart, false); 
    document.addEventListener("scroll", Scroll, false); 
    function ScrollStart() { 
     //start of scroll event for iOS 
    } 
    function Scroll() { 
     //end of scroll event for iOS 
     //and 
     //start/end of scroll event for other browsers 
    } 
// --> 
</script> 
+3

私は彼が「タッチモーブ」または「スクロール」イベントによって処理されないモーメンタムスクロール期間を参照していると思います。 – zanona

+1

divをoverflowに設定してiOS7でこれを確認した1日を過ごしただけです。scroll-safariは2つのケースでスクロールイベントを発生させます:** 1)ユーザーがタッチしてスクロールを開始する** - スクロールイベントはこの場合touchmoveイベントだけ発生します。** 2)ユーザーは「フリック」スタイルのスクロールを開始しました。** - サファリは、スクロールが休止するとスクロールイベントを発生します(ボトムバウンスを含む) –

+0

私はAndroid 4.4でChromeを調べたので、実際にはスクロールが発生している間(スクロールが惰性であっても)スクロールイベントが発生し、スクロールの開始時に1回のtouchmoveイベントが発生します。ただし、Safariは、** scrollとtouchmoveの両方のイベントを発生させますが、指を押しながらdivをスクロールします。 –

関連する問題