2010-03-24 11 views
14

Me gustaría saber el desplazamiento x/y de cuánto ha "desplazado" el usuario dentro de la ventana gráfica en el safari móvil en el iphone.Cómo encontrar (en javascript) el desplazamiento actual de "desplazamiento" en safari móvil/iphone

Dicho de otra manera, si yo (a través de javascript) volví a cargar la página actual, me gustaría encontrar los valores que tendría que pasar a window.scrollTo (...) para cambiar la posición del documento/ventana gráfica como lo es actualmente.

window.pageXOffset siempre informa 0

de jQuery $ ('cuerpo'). ScrollTop() siempre informa 0

eventos tienen un pageX, pero esto no va a dar cuenta de que el desplazamiento de la página que sucede después de que sueltas el dedo si tu gesto fue "deslizar" la página hacia arriba/abajo. A saber, me dará un punto cuando el dedo salga de la pantalla, pero eso no siempre coincide con el lugar donde estará la página una vez que haya terminado de desplazarse.

¿Alguna sugerencia?

+0

No se ve prometedor http://github.com/jquery/jquery/commit/dab1d7467789c7092366f8231dceee0dc20d2553 – mintywalker

Respuesta

0

¿Has probado la forma pura js?

document.body.scrollTop 
+1

document.body.scrollTop tampoco funciona. Funcionará en Safari en el escritorio, pero no en el safari móvil: informa 0 siempre. – mintywalker

5

window.pageYOffset debería darle la compensación de desplazamiento actual. Hay window.pageXOffset si lo necesita también.

+0

A menos que haya cambiado en una versión beta reciente, eso no funciona. Ese fue el quid de mi pregunta original ... aunque le garantizo que utilicé pageXOffset en vez de pageYOffset. – mintywalker

+0

pageYOffset está trabajando en mi aplicación de envío en este momento. No uso X, así que esa podría ser la diferencia. – pendor

-1

¡Hola! Intenta ir a través del enlace this.

o intente con el código siguiente.

[myWebView stringByEvaluatingJavaScriptFromString: @"scrollY"];

realidad - Tengo la respuesta de esta question.

+5

a menos que me falta algo, ¡eso no es javascript! – mintywalker

0

Tuve el mismo problema en el iPad. Solo desactiva la consola. La altura de la ventana cambia cuando la consola está abierta en Safari.

3

Esto de hecho trabajar:

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

Si está viendo el contenido en un iFrame (que es común en WebViews por ejemplo), entonces usted tendrá que añadir los padres:

var scrollX = parent.window.pageXOffset; 

también tenga en cuenta que estos valores no son escribibles. Así que para cambiar la posición de desplazamiento, tendrá que utilizar el método window.scrollTo:

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

Aquí es un código simple de encontrar si el dispositivo es iPhone y también para cambiar la posición de desplazamiento a la posición específica sobre la base de algún tipo de acción .Tuve un problema con el iPhone solo cuando hago clic y abro una imagen como ventana emergente, porque el desplazamiento vertical baja de donde yo quería estar. Así que escribí este código y resolvió el problema.

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

Para encontrar la posición de desplazamiento. Simplemente vaya a la consola en cromo y escriba window.scrollY para ver la posición vertical y observe cómo cambia ese número y déjelo en lugar de x y y

Cuestiones relacionadas