No puedo conseguir enlaces mailto para abrir la aplicación de correo desde Mobile Safari cuando se utiliza jQTouch. ¿Qué podría estar mal?

StackOverflow https://stackoverflow.com/questions/2317431

  •  22-09-2019
  •  | 
  •  

Pregunta

Estoy desarrollando una aplicación web para el iPhone usando jQTouch , y que contiene un enlace sencillo a un mailto: válida dirección de correo electrónico, que debe iniciar la aplicación de correo iPhone cuando tocó, pero no lo hace.

Si vuelvo a visitar una página web "normal" en Mobile Safari, que contiene exactamente el mismo enlace, y pulsa sobre él, me da el resultado esperado: la aplicación de correo electrónico aparece con la dirección de correo electrónico correcta en el campo Para

Aquí está el enlace HTML (con la dirección cambiado) por si acaso me estoy volviendo loco y he cometido un error estúpido, pero parece perfectamente bien:

<p><a href="mailto:info@mycompany.com">info@mycompany.com</a></p>

¿Alguien ha encontrado al utilizar este jQTouch? O cualquier persona puede sugerir al menos una forma de que pueda depurar esto? En el momento en tocar en el enlace que no funciona parpadea (el estado del enlace activo) de color rojo y absolutamente no ocurre nada más.

¿Fue útil?

Solución 2

Me volvió a mirar el código de ejemplo en el paquete de demostración jQTouch y vio que estaban añadiendo un atributo target="_blank" a su enlace de correo electrónico.

Lo hice a mi enlace, y empecé a trabajar (a aparecer la ventana de correo). Sin embargo, el enlace que está en una página web estándar funciona tan bien, pero sin el atributo target="_blank" ...

Estoy desconcertado, pero la adición de dicho atributo parece resolver este problema si su página móvil está utilizando jQTouch.

Otros consejos

He encontrado que la adición de target="_blank" a los enlaces trabajó - excepto que en algunos navegadores de escritorio, se abrió una nueva ventana en blanco y abrió la ventana de correo electrónico. Por supuesto, los sitios jQTouch no están normalmente van a ser visto en los navegadores de escritorio, pero no era aficionado a ese comportamiento.

En su lugar, esto es lo que hice:

  • Poner el enlace mailto: en caso onclick y false retorno agregado (enlace de manera efectiva a # no se dispara)
  • Se ha añadido una clase noHighlight al enlace

Este es un ejemplo:

<a href="#" onclick="window.location='mailto:email@domain.com'; return false;" class="noHighlight">Email me</a>

Entonces modificó la CSS en el archivo de tema.

Antes:

ul li a.active {
   background: #194fdb url(img/selection.png) 0 0 repeat-x;
   color: #fff;
}

Después de:

ul li a.active:not(.noHighlight) {
   background: #194fdb url(img/selection.png) 0 0 repeat-x;
   color: #fff;
}

La razón por la que añadí la clase noHighlight es que sin él, el botón conseguiría resaltado y lo haría "stick", que hizo que el botón que todavía estaba en un estado activo. Para conseguir alrededor de la cuestión, he añadido la clase y modificado el CSS como se describió anteriormente.

Lo que el cambio CSS hace es que si el enlace (en el interior de un li que se encuentra dentro de un ul) tiene la noHighlight clase, no va a cambiar el color de fondo o de texto.

Parece que funciona muy bien ahora tanto en los navegadores de escritorio y móviles.

Esto no está relacionado con jQTouch, pero mailto: enlaces no funcionaban bien para mí y para fijarlos, todo lo que tenía que hacer era barras añadir, después de los dos puntos

.

mailto://info@mycompany.com

tuvo la idea de hacer esto aquí: http: //mobiledevelopertips.com/cocoa/launching-other-apps-within-an-iphone-application.html. Curiosamente, enlaces telefónicos trabajaron bien para mí y sin las barras.

Funciona bien sólo con target = "_ blank".

Para aquellos (como yo) que les resulta molesto para conseguir la "Esto abrirá en una nueva página" emergente cada vez que se pulsa en un mailto o tel Enlace usted puede hacer esto:

Editar jqtouch.js e ir a la línea 284:

if ($el.attr('target') == '_blank' || $el.attr('rel') == 'external')

Ahora reemplazar esta línea por:

if ($el.attr('target') == '_self' || $el.attr('target') == '_blank' || $el.attr('rel') == 'external')

Y en el HTML (por ejemplo.):

<a href="tel:+351912345678">Call me</a>

se convierte

<a target="_self" href="tel:+351912345678">Call me</a>

Excelente encontrar, estoy haciendo lo mismo y no podía entender por qué hasta hace poco. Si nos fijamos línea redonda 161 y 284 en jqtouch.js rev 109 se ve que el atributo target "_blank" mantendrá jQTouch secuestre su evento click. Se está interceptando el evento, ya que es el principal mecanismo para pasar de una página a otra.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top