2011-08-27 27 views
8

Cuando se utiliza un enlace de correo electrónico es probable que no haga nada por el usuario si no tiene una configuración de cliente de correo electrónico, o no configuró su correo web para ser su cliente predeterminado (p. gmail as default client in macosx). ¿Cuál sería la mejor manera de ofrecer una alternativa con gracia, amablemente pidiéndole al usuario que le envíe un correo electrónico manualmente? que podría utilizar JS o CSS para mostrar un mensaje una vez que el enlace se ha hecho clic:detectando cuando mailto falló

enviar tuvo éxito, o si nada hubiera pasado por favor correo electrónico manualmente.

¿Qué ocurre con el uso de un formulario con mailto, puedo usar una página de redireccionamiento si no hay scripts en el servidor? ¿Hay alguna manera de filtrar el éxito de la falla, en lugar de confiar en el juicio del usuario con el mensaje de doble éxito/error anterior?

editar: Al menos, cuál sería la forma más adecuada de cambiar un estado cuando se hace clic en un enlace (o formulario) mailto. Obviamente JavaScript o css son opciones, pero no puedo simplemente crear un enlace de acción doble o enviar formulario; mailto y también enlace a otra página (ha enviado/ha hecho clic en el botón ')

+4

'mailto:' es malo - créame, a nadie le gusta abrir el cliente de correo electrónico sin motivo. Use el formulario del lado del servidor en su lugar :). – xfix

+1

No se puede decir nada sobre si un enlace "mailto:" "funciona" para un usuario. – Pointy

+0

Relacionados: http://stackoverflow.com/questions/836777/how-to-detect-browsers-protocol-handlers – DaveRandom

Respuesta

1

No puede detectar si un usuario tiene una configuración de cliente de correo electrónico o no. Entonces, le sugiero que configure un formulario del lado del servidor para que el usuario lo contacte.

Por debajo o por debajo de esto, puede proporcionarle al usuario un enlace que le explique que si quiere contactarlo directamente a través de su cuenta de correo electrónico principal, puede hacer clic en este enlace (este es un enlace mailto:).

Al proporcionarle dos maneras de contactarlo (formulario web o cliente de correo electrónico), le da al usuario la oportunidad de elegir cuál quiere usar. Depende de él darse cuenta si tiene o no instalado un cliente de correo electrónico y si quiere usarlo o no.

+1

Tengo buenas razones para querer usar el enlace de mailto, y estoy familiarizado con las mejores prácticas para los formularios de contacto. Estoy más interesado en obtener un cambio de estado al hacer clic (ver pregunta de edición) – newnomad

0

Utilice un JavaScript confirm popup para preguntar al usuario si tienen configuración de correo electrónico en su computadora.

+0

O solo una casilla de verificación si el mailto tiene forma de acción en un formulario. Supongo que es una decisión de UI sobre cuándo desea molestar al usuario al respecto, antes o después del clic ... – newnomad

+1

Sí, tengo configurada la cuenta de correo electrónico, simplemente escribo gmail en mi navegador ... No asuma que los usuarios entenderán eso pregunta (y [no hacer] (http: // w3fools.com /) recomienda W3Schools como referencia) – Quentin

+0

otro enfoque es simplemente ofrecer una dirección de correo electrónico legible y copiable junto al enlace; http://stackoverflow.com/questions/6028471/mailto-with-no-default-email-client – newnomad

8

This article analiza un truco de comprobación si se desencadenó el desenfoque de window después de hacer clic en el mailto. Utiliza un tiempo de espera, por lo que no es infalible, pero podría abordar la mayoría de los casos.

(function($)) { 
    $('a[href^=mailto]').each(function() { 
    var href = $(this).attr('href'); 
    $(this).click(function() { 
     var t; 
     var self = $(this); 

     $(window).blur(function() { 
     // The browser apparently responded, so stop the timeout. 
     clearTimeout(t); 
     }); 

     t = setTimeout(function() { 
     // The browser did not respond after 500ms, so open an alternative URL. 
     document.location.href = '...'; 
     }, 500); 
    }); 
    }); 
})(jQuery); 
Cuestiones relacionadas