2012-03-22 18 views
5

Obecnie używam przepełnienia: przewij stronę internetową zoptymalizowaną pod kątem iPada i działa świetnie. Zacząłem wpadać w kłopoty z wydarzeniami dotykowymi na elementach przewijanego elementu div, ponieważ interpretował on przewijane przesunięcia jako dotknięcia. Ponieważ nie ma pełnego zdarzenia przewijania, a zdarzenie przewijania jest uruchamiane przy każdym przewijaniu, próbowałem wykryć zdarzenie przewijania i ustawić zegar, aby tymczasowo wyłączyć zdarzenie dotykowe. Odkryłem jednak, że zdarzenie przewijania jest uruchamiane tylko za każdym razem, gdy użytkownik inicjuje zwój, co rzadko odbywa się z przewijaniem inercyjnym.Zdarzenia dotyczące przewijania inercyjnego na mobilnym Safari

Czy istnieje ciągłe zwalnianie zdarzenia przewijania lub inny sposób wykrywania, że ​​obecnie trwa przewijanie?

To tylko problem z przewijaniem inercyjnym w przeglądarce Mobile Safari, ponieważ po przesunięciu myszy na OS X przewijanie inercyjne zatrzymuje się automatycznie, więc aby zainicjować zdarzenie click, zwykle trzeba przesunąć mysz, aby uniknąć konflikt. Nie masz też podwójnego wejścia dotykowego do przewijania i dotykowego do gwintowania.

Odpowiedz

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

Uważam, że odnosi się do okresu przewijania pędu, który nie jest obsługiwany przez zdarzenia "dotykania" lub "przewijania". – zanona

+1

właśnie spędziłem dzień sprawdzając to na iOS7 z ustawionym div na przepełnienie: scroll - safari wywoła zdarzenia przewijania w dwóch przypadkach: ** 1) użytkownik dotyka, a następnie przesuwa swój dotyk, aby rozpocząć przewijanie ** - wygląda zdarzenie przewijania wystrzeliwuje tak samo jak zdarzenie touchmove w tym przypadku ** 2) użytkownik zainicjował przewijanie stylu "flick" ** - safari wywoła zdarzenie przewijania tylko wtedy, gdy przewijanie zostanie zatrzymane (włączając odbicie od dołu) –

+0

od czasu, gdy sprawdzałem także Chrome w Androidzie 4.4 - Chrome faktycznie wyzwala zdarzenia przewijania podczas przewijania (nawet z bezwładnością) i wystrzeli pojedyncze zdarzenie touchmove na początku przewijania. Safari uruchomi jednak ** dwa zdarzenia przewijania i dotykania, podczas gdy palec jest przytrzymywany, a element div przewijany. –

Powiązane problemy