2010-08-19 12 views
11

Estoy tratando de detectar, de una manera segura e independiente del dispositivo, cuando se muestra la barra de direcciones en el navegador del iPhone. Esta es la barra de herramientas que se muestra en la parte superior para mostrar la URL. Se puede ocultar llamando:Detectar si la barra de direcciones se muestra en el navegador del iPhone

window.scrollTo(0, 0) 

Lo que me gustaría hacer, es detectar cuando está siendo espectáculo (lo que reduce el espacio de visualización disponible) y establece un temporizador para ocultarlo de nuevo un segundo o así después. Es más frecuente que eso y será bastante molesto ya que los usuarios no podrán acceder a la barra de direcciones.

He intentado marcar window.pageYOffset, desafortunadamente, esto devuelve cero si alguna parte de la barra de direcciones está visible.

I no desea codificar todas las dimensiones en el iPhone y compararlas con el tamaño de la ventana actual. Es muy frágil

¿Alguien sabe una solución aquí?

+0

No tengo claro el problema. Detecta en la carga de la página, o revisa setInterval y después de X cantidad de tiempo, ocúltalo pero dale al usuario suficiente tiempo para ingresar una nueva URL si así lo desea. Por favor elabora. – donohoe

Respuesta

10

La window.innerHeight propiedad es lo que estás buscando. Esta es la altura del contenido real en la pantalla. Es significativamente menor cuando la barra de herramientas en la parte superior es visible, porque hay menos espacio para el contenido. Hay un pequeño problema que no puedo entender en mi iPhone 4: window.innerHeight algunas veces devuelve 3 píxeles menos en ciertas posiciones de desplazamiento de la pantalla.

He creado un ejemplo para usted que hace más o menos lo que usted pidió, por lo menos debería empezar:

http://jsfiddle.net/rUSEb/show/light (probarlo en tu iPhone).

+3

Parece que no funciona con iPhone 6. Sin embargo, la barra de "Resultados" agregada por jsfiddle reacciona a la barra de direcciones que se muestra/oculta. Por lo tanto, la detección parece ser posible. –

+0

La barra "Resultado" utiliza 'position: fixed;' así que no creo que eso detecte directamente la presencia de la barra de direcciones. –

+0

innerHeight/Width también se ven afectados por el zoom, por lo que puede obtener resultados impredecibles. – GreySage

Cuestiones relacionadas