Tengo un problema con la web después de agregar el icono a la pantalla de inicio. Si la web se inicia desde la pantalla de inicio, todos los enlaces se abrirán en una nueva ventana en Safari (y perderán la funcionalidad de pantalla completa). ¿Cómo puedo prevenirlo? No pude encontrar ayuda, solo la misma pregunta sin respuesta.
iphone
safari
iphone-standalone-web-app
Pavel Linkesch
fuente
fuente
scope
parámetro enmanifest.json
. Vea mi respuesta para más detalles. Lo he probado en iOS 11.3 y funciona.Respuestas:
Encontré la solución de JavaScript en el marco de iWebKit :
fuente
[].forEach.call(document.links, function(link) { link.addEventListener("click", function(event) { event.preventDefault(); window.location = this.href; }) });
Las otras soluciones aquí no tienen en cuenta los enlaces externos (que probablemente desee abrir externamente en Safari) o no tienen en cuenta los enlaces relativos (sin el dominio en ellos).
El proyecto html5 mobile-boilerplate enlaza con esta esencia que tiene una buena discusión sobre el tema: https://gist.github.com/1042026
Aquí está el código final que se les ocurrió:
fuente
Si está utilizando jQuery, puede hacer:
fuente
this.href
lugar de enviarlo a un objeto jQuery, pero gracias por esta respuesta. Funciona en iOS6.Esto funciona para mí en iOS 6.1 y con enlaces Bootstrap JS (es decir, menús desplegables, etc.)
fuente
$('a').on('click'
, función (e) {`con$('area').on('click'
, función (e) {` pero eso tampoco parece funcionar. ¿Algunas ideas?a
lahref="#"
continuación puedes ser más específico en el selector de jQuery, por ejemplo$('a[href!="#"]')
Esta es una vieja pregunta y muchas de las soluciones aquí están usando JavaScript. Desde entonces, se ha lanzado iOS 11.3 y ahora puede usar el miembro de alcance . El miembro de ámbito es una URL como
"/"
donde todas las rutas bajo ese ámbito no abrirán una nueva página.Aquí está mi ejemplo:
También puede leer más sobre esto aquí . También recomiendo usar el generador que proporcionará esta funcionalidad.
fuente
Según la respuesta de Davids y el comentario de Richards, debe realizar una verificación de dominio. De lo contrario, los enlaces a otros sitios web también se abrirán en su aplicación web.
fuente
Si usa jQuery Mobile, experimentará la nueva ventana cuando use el atributo data-ajax = 'false'. De hecho, esto sucederá siempre que ajaxEnabled esté desactivado, por un enlace externo, por una configuración $ .mobile.ajaxEnabled o por tener un atributo target = ''.
Puedes arreglarlo usando esto:
(Gracias a Richard Poole por el método live (), no funcionaba con bind ())
Si ha desactivado ajaxEnabled globalmente, deberá soltar [data-ajax = 'false'].
Esto me tomó bastante tiempo para darme cuenta, ya que esperaba que fuera un problema específico de jQuery Mobile donde, de hecho, fue el enlace Ajax lo que realmente prohibió la nueva ventana.
fuente
Este código funciona para iOS 5 (funcionó para mí):
En la etiqueta de la cabeza:
En el enlace que desea que se abra en la misma ventana:
Obtuve este código de este comentario: metaetiquetas de aplicaciones web para iPhone
fuente
Tal vez debería permitir abrir enlaces en una nueva ventana cuando el objetivo también se establezca explícitamente en "_blank":
fuente
He encontrado uno que es muy completo y eficiente porque comprueba que se ejecuta solo bajo una aplicación web independiente, funciona sin jQuery y también es sencillo, solo probado en iOS 8.2:
Manténgase independiente: evite enlaces en aplicaciones web independientes que abran Mobile Safari
fuente
También puedes hacer enlaces casi normalmente:
Y puede eliminar la etiqueta hash y href, todo lo que hace afecta la apariencia.
fuente
Esto es lo que funcionó para mí en iOS 6 (muy leve adaptación de la respuesta de rmarscher):
fuente
Esta es una versión ligeramente adaptada de Sean que impedía el botón de retroceso
});
fuente
Para aquellos con Twitter Bootstrap y Rails 3
Eliminar enlaces todavía funcionan de esta manera.
fuente
Prefiero abrir todos los enlaces dentro del modo de aplicación web independiente, excepto los que tienen target = "_ blank". Usando jQuery, por supuesto.
fuente
Una solución alternativa que utilicé para una aplicación web iOS fue que hice que todos los enlaces (que eran botones de CSS) formaran botones de envío. Así que abrí un formulario que se publicó en el enlace de destino, luego ingresé type = "submit" No es la mejor manera, pero es lo que descubrí antes de encontrar esta página.
fuente
Creé un paquete instalable de Bower a partir de la respuesta de @ rmarscher que se puede encontrar aquí:
http://github.com/stylr/iosweblinks
Puede instalar fácilmente el fragmento con Bower usando
bower install --save iosweblinks
fuente
Para aquellos que usan
JQuery Mobile
, las soluciones anteriores rompen el diálogo emergente. Esto mantendrá los enlaces dentro de la aplicación web y permitirá ventanas emergentes.También podría hacerlo por:
fuente
Esto es lo que usaría para todos los enlaces en una página ...
Si está utilizando jQuery o Zepto ...
fuente
Simplemente puede eliminar esta metaetiqueta.
fuente