2010-03-24 11 views
14

Chciałbym wiedzieć przesunięcie x/y o ile użytkownik "przewinął" w oknie roboczym w mobilnym safari na iphone.Jak znaleźć (w javascript) aktualne przesunięcie "przewijania" w mobilnym safari/iphone

Innymi słowy, jeśli ja (poprzez javascript) ponownie załaduję bieżącą stronę, chciałbym znaleźć wartości, które muszę przekazać do window.scrollto (...) w celu zmiany położenia dokumentu/rzutni tak jak jest obecnie.

window.pageXOffset zawsze donosi 0

jQuery $ ('body'). ScrollTop() zawsze donosi 0

wydarzenia mają pageX, ale to nie będzie odpowiadać za przewijanie strony, które dzieje się po zwolnieniu palca, jeśli gestem było "machnięcie" strony w górę/w dół. Mianowicie, da mi punkt, gdy palec opuści ekran, ale to nie zawsze pasuje do miejsca, w którym strona będzie po przewinięciu.

Jakieś wskazówki?

+0

Nie wyglądasz obiecująco http://github.com/jquery/jquery/commit/dab1d7467789c7092366f8231dceee0dc20d2553 – mintywalker

Odpowiedz

0

Czy próbowałeś czystej drogi js?

document.body.scrollTop 
+1

document.body.scrollTop też nie działa. Będzie działać w Safari na pulpicie, ale nie w mobilnym safari - zgłasza 0 zawsze. – mintywalker

5

window.pageYOffset powinno dać aktualny zwój offset. Jest też window.pageXOffset, jeśli tego potrzebujesz.

+0

O ile nie zmieniło się w ostatniej wersji beta, to nie działa. To było sedno mojego pierwotnego pytania ... chociaż przyznaję, że użyłem pageXOffset zamiast pageYOffset. – mintywalker

+0

pageYOffset działa teraz w mojej aplikacji do wysyłki. Nie używam X, więc to może być różnica. – pendor

-1

Hej! Spróbuj przejść przez link this.

lub spróbuj wpisać kod.

[myWebView stringByEvaluatingJavaScriptFromString: @"scrollY"];

faktycznie - Dostałem odpowiedź od tego question.

+5

chyba że czegoś brakuje, to nie javascript! – mintywalker

0

Miałem ten sam problem na iPadzie. Po prostu zdezaktywuj konsolę. Wysokość widoku zmienia się, gdy konsola jest otwarta w Safari.

3

To rzeczywiście działa:

var scrollX = window.pageXOffset; 
var scrollY = window.pageYOffset; 

Jeśli oglądania treści w iFrame (co jest powszechne w WebViews na przykład), a następnie trzeba będzie dodać nadrzędny:

var scrollX = parent.window.pageXOffset; 

także zauważ, że tych wartości nie można zapisać. Tak, aby zmienić pozycję przewijania, trzeba będzie użyć metody window.scrollTo:

var scrollX = window.pageXOffset; 
var scrollY = window.pageYOffset; 
window.scrollTo(scrollX -100, scrollY -100); 
1

Oto prosty kod aby dowiedzieć się, czy urządzenie jest iphone, a także zmienić pozycję przewijania do określonej pozycji w oparciu o jakiejś akcji .Problem z iPhone'em wystąpił tylko wtedy, gdy kliknę i otworzę obrazek jako wyskakujące okienko, ponieważ przewijanie pionowe idzie w dół, niż tam, gdzie chciałem być. Napisałem ten kod i rozwiązałem problem.

if((navigator.userAgent.match(/iPhone|iPad|iPod/i))){ 
    ('#tutorial-landlord').click(function(){ 
     window.scroll(100, 1500); // x, y (horizontal, vertical position) 
    }); 
} 

Aby znaleźć pozycję przewijania. Po prostu przejdź do konsoli w chrome i napisz window.scrollY dla pionu i zobacz jak zmienia się pozycja, więc zapamiętaj numer i nadaj mu zamiast x i y

Powiązane problemy