2011-08-27 4 views
8

Quando si utilizza un collegamento mailto, è probabile che non esegua nulla per l'utente se non dispone di una configurazione di client di posta elettronica o non ha configurato la sua webmail come client predefinito (ea. gmail as default client in macosx). Quale sarebbe il modo migliore per offrire con garbo un fallback, chiedendo gentilmente all'utente di inviarlo via email manualmente? potrei usare JS o CSS per mostrare un messaggio una volta che il collegamento è stato fatto clic:rilevamento della mancanza di posta elettronica

submit ha avuto successo, o se non è successo niente scriveteci manualmente.

Informazioni sull'utilizzo di un modulo con mailto, è possibile utilizzare una pagina di reindirizzamento in caso di esito positivo senza o con scripting serveride? C'è un modo per filtrare il successo dal fallimento, invece di affidarsi al giudizio dell'utente con il doppio successo/messaggio fallito sopra?

modifica: almeno quale sarebbe il modo più adatto di modificare uno stato quando è stato fatto clic su un collegamento (o modulo) mailto. Ovviamente JavaScript o css sono opzioni, ma non posso semplicemente creare un doppio link di azione o un modulo di invio; mailto e anche collegamento a un'altra pagina (è stato inviato/premuto il pulsante ')

+4

'mailto:' è negativo - fidati, a nessuno piace aprire il client di posta elettronica senza motivo. Utilizza invece il modulo sul lato server :). – xfix

+1

Non è possibile sapere se un collegamento "mailto:" "funziona" per un utente. – Pointy

+0

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

risposta

1

Non è possibile rilevare se un utente ha impostato il client di posta elettronica. Quindi ti suggerisco di configurare un modulo sul lato server per consentire all'utente di contattarti.

Al di sotto o al di sopra di questo è possibile fornire all'utente un collegamento che lo spiega che se desidera contattarvi direttamente tramite il suo account di posta elettronica principale, può fare clic su questo collegamento (questo collegamento è un collegamento mailto:).

Fornendogli due modi di contattare l'utente (webform o client di posta elettronica), si dà all'utente la possibilità di scegliere quale desidera utilizzare. Quindi sta a lui capire se ha un client e-mail installato e se vuole o meno usarlo.

+1

Ho buone ragioni per voler utilizzare il collegamento mailto e ho familiarità con le migliori pratiche per i moduli di contatto. Sono più interessato a ottenere una modifica dello stato dopo aver fatto clic (vedere la domanda di modifica) – newnomad

0

Utilizzare un JavaScript confirm popup per chiedere all'utente se hanno configurato e-mail sul proprio computer.

+0

o solo una casella di controllo se il mailto è sotto forma di un'azione in un modulo. Indovina che è una decisione dell'interfaccia utente quando vuoi disturbare l'utente a pensarci, prima o dopo il clic ... – newnomad

+1

Sì, ho impostato la posta elettronica, digito semplicemente gmail nel mio browser ... Non dare per scontato che gli utenti capiranno che domanda (e [non] (http: // w3fools.it /) consiglia W3Schools come riferimento) – Quentin

+0

un altro approccio è solo offrire un indirizzo email leggibile e copiabile accanto al collegamento; http://stackoverflow.com/questions/6028471/mailto-with-no-default-email-client – newnomad

8

This article discute un trucco per verificare se l'evento sfocatura dello window si è attivato dopo aver fatto clic sul mailto. Utilizza un timeout, quindi non è infallibile, ma potrebbe riguardare la maggior parte dei casi.

(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);