2010-11-07 18 views
21

Tengo una especie de pregunta fácil: ¿cómo ocultar la barra de direcciones en el iPhone?¿Cómo ocultar la barra de direcciones en iPhone?

probé dos métodos diferentes hasta ahora:

  • El desplazamiento hacia abajo de un solo truco píxeles con Javascript al cargar la página

  • Y las siguientes etiquetas meta:

    <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /><meta name="apple-mobile-web-app-capable" content="yes" /> 
    

también esto:

<meta names="apple-mobile-web-app-status-bar-style" content="black-translucent" /> 

Estoy completamente confundido. ¡Cualquier consejo sería muy apreciado!

PD: Ah, se me olvidó algo muy importante: la página web en sí misma no desborda la ventana del navegador, probablemente la razón por la cual el truco de desplazamiento de 1 píxel no funciona.

No se puede hacer más grande, ya que el golpe cosa sobre el diseño, que cada uno puede desplazarse, pero esta página pliegues ... :)

+2

Si la página no se desborda en la ventana del navegador, ¿por qué no hace que el cuerpo de la página sea un poco más alto, desplácese a 0,1 para ocultar la barra de direcciones y luego deshabilite el desplazamiento? – Rengers

+0

Estas metaetiquetas solo tienen un efecto si la aplicación se inició a través de un marcador en la pantalla de inicio. Más información: https://developer.apple.com/library/safari/codinghowtos/Mobile/UserExperience/_index.html – xentek

Respuesta

54

Solo pulse este, si la barra de direcciones no se esconde, la razón puede ser simplemente que la página no es lo suficientemente larga para desplazarse.

Cuando el

window.scrollTo(0,1) 

se llama el MUST página ser más largo que la ventana para que pueda ocurrir un evento de desplazamiento. Solo cuando se produzca el desplazamiento, Safari móvil ocultará la barra de direcciones.

+0

Esto debería tener más votos, estás absolutamente al tanto de la altura de la página. ¡No se puede desplazar si no hay nada allí! – iamkeir

+0

Para que sea la altura correcta, consulte: http://stackoverflow.com/questions/5206811/hide-iphone-address-bar-with-100-height – poshaughnessy

+0

Estaba buscando que "ocultar la barra de direcciones" no funcionara, pero en su lugar, esto resolvió mi problema de 'width = device_width' no funcionaba. +1 por eso. – P5Coder

9

A menos que algo ha cambiado en los últimos versiones de iOS, el desplazamiento hacia abajo truco es el único que funciona de forma fiable, he tenido problemas con this version:

/mobile/i.test(navigator.userAgent) && !location.hash && setTimeout(function() { 
    window.scrollTo(0, 1); 
}, 1000);​ 

no importa cualquier otra plataforma móvil de esta página en particular, sin embargo, que fue basado en la reorientación de agente ... que Es posible que desee cambiar la expresión regular para verificar específicamente iPhone, por ejemplo reemplace /mobile/ con /iPhone/.

+0

Este va a ser un micrositio solo para iphone. Gracias por el consejo Nick, va a intentarlo ;-) –

+0

No, todavía no tiene efecto. Pero creo, estoy haciendo algo mal. Adjunté el código que me acabas de dar, para cargar, con jquery: –

2

Sé que este hilo está comenzando a la edad, pero si usted vino aquí en busca de respuestas, trato:

setTimeout(function() { 
    window.scrollTo(0, 1); 
}, 1000); 

si se utiliza jQuery, poner al final de $(document).ready(); El tiempo de espera permite que el navegador determinar la altura de la página ...

5

Creo que esta versión es realmente mejor. Prueba para ver si el usuario ya ha comenzado a desplazarse, que es un problema que noté en mi proyecto móvil.

/Mobile/.test(navigator.userAgent) && !location.hash && setTimeout(function() { 
    if (!pageYOffset) window.scrollTo(0, 1); 
}, 1000); 
2

puede ejecutar la función cuando el contenido del sitio está listo en lugar de utilizar el tiempo de espera

addEventListener("load", function() { 
    window.scrollTo(1, 0); 
}, false); 
1

Sé que esto es una entrada antigua, pero para responder a la pregunta, creo que no se resolverá a menos que el contenido es> que la ventana del navegador.

Aquí hay un código que ocultará la URL en carga, en el cambio de orientación y en una entrada táctil (la entrada táctil solo se debe usar si tiene una url oculta persistente, que es una lata de gusanos completa, si no, elimine esa parte del guión).

if(!window.location.hash && window.addEventListener){ 
    window.addEventListener("load",function() { 
     setTimeout(function(){ 
      window.scrollTo(0, 0); 
     }, 0); 
    }); 
    window.addEventListener("orientationchange",function() { 
     setTimeout(function(){ 
      window.scrollTo(0, 0); 
     }, 0); 
    }); 
    window.addEventListener("touchstart",function() { 
     setTimeout(function(){ 
      window.scrollTo(0, 0); 
     }, 0); 
    }); 
} 
4

ACTUALIZACIÓN: de Apple removed apoyo a minimal-ui en iOS 8, de manera que esto ya no es una respuesta útil :(


Para los nuevos empleados de Google buscando en este : A partir del iOS 7.1 hay un nuevo minimal-ui modo que funciona en Safari móvil:

minimal-ui

Se habilita al establecer la propiedad minimal-ui en la ventana gráfica:

<meta name="viewport" content="minimal-ui"> 

También se puede utilizar en combinación con otras propiedades de esta manera:

<meta name="viewport" content="width=device-width, minimal-ui"> 

De nota, no hay requisito de longitud de contenido mínimo como con el scrollTo pirateo. Hay una gran visión general de este nuevo modo here. (De ahí viene la imagen de arriba). También enumera algunas deficiencias.

La única documentación oficial que pude encontrar en esta es una nota en Apple's iOS 7.1 release notes:

Una propiedad, mínimo-ui, se ha añadido para la clave etiqueta meta de visualización que permite minimizar las barras superior e inferior de el iPhone mientras se carga la página. Mientras estás en una página usando minimal-ui, tocar la barra superior trae las barras hacia atrás. Tocando hacia atrás en el contenido los descarta nuevamente.

Por ejemplo, use <meta name="viewport" content="width=1024, minimal-ui”>.

Por supuesto, ya esto sólo funciona en iOS 7.1 y anteriores, su utilidad puede ser limitada.

+0

Esto suena realmente bien hasta que te das cuenta [se elimina en iOS 8] (http://stackoverflow.com/q/24889100/1676444) :(En la pregunta relacionada, [Gajus explica una alternativa a 'minimal-ui'] (http://stackoverflow.com/a/26884561/1676444) que puede ayudar a algunas personas. – Turnerj

0

En caso de que ninguna de estas soluciones funcione y se encuentre con el problema tan pequeño que enfrenté, esto es lo que me solucionó.

que tenían esto en mi CSS

html{position: relative; height 100%; overflow: hidden;} 

Este css se aplica una solución a uno de los mis páginas, así que limita con una condición a esa página, y la barra de direcciones ahora está comportando correctamente en todo otras páginas

Cuestiones relacionadas