Comment empêcher un événement mailto d'ouvrir un nouvel onglet dans le navigateur

j'utilise un mailto: rempli en JavaScript pour envoyer des informations à travers mon application web, mais chaque fois qu'un utilisateur appuie sur le Envoyer bouton, il ouvre un nouvel onglet dans le navigateur avant d'ouvrir l'application de mailing (Outlook, Gmail, etc).

y a-t-il un moyen d'empêcher l'onglet vide de s'ouvrir?


Edit: ce problème est rencontré dans tous les navigateurs principaux suivants: Internet Explorer, Firefox et Google Chrome.

j'utilise window.open() pour envoyer des e-mails, est-il connu des alternatives?

Voici comment j'ai envoyer le mail:

var mailto_link = 'mailto:'+email+'?subject='+subject+'&body='+body_message;
var win = window.open(mailto_link,'emailWindow');

je ne veux pas utiliser window.location.href puisque j'affiche un message après que l'Utilisateur a envoyé l'email.

23
demandé sur Jeff Noel 2012-11-19 20:09:33

6 réponses

Merci pour le modifier. Il existe en effet une alternative:

window.location.href = "mailto:mail@domain.tld";
alert("Thank you!");

Je ne veux pas utiliser window.emplacement.href depuis que j'affiche un message après que l'Utilisateur a envoyé l'email.

Je n'ai pas vraiment compris celui-là. Vous n'êtes pas à quitter le site lors de l'utilisation de mailto:window.location.href

23
répondu AmShaegar 2012-11-19 16:26:14

la fenêtre.emplacement.href solution par AmShaegar fonctionne assez bien, mais il a causé des effets secondaires dans une application complexe que j'ai été développer.

j'ai finalement trouvé cette solution pourrait être intéressé par:

$('<iframe src="mailto:mail@domain.tld">').appendTo('body').css("display", "none");

voir ce plunker:http://plnkr.co/edit/J0LvQU?p=preview

7
répondu Guillaume 2014-01-22 15:29:57

l'onglet vide est ouvert par window.open(). Vous n'en avez pas besoin.

la syntaxe pour un lien mailto devrait être quelque chose comme

<a href="mailto:your@email.address?subject=Comments about the color blue">Contact Us</a>
http://www.addressmunger.com/mailto_syntax_tutorial/ pour plus de détails.

4
répondu Samuel Rossille 2012-11-19 16:26:58

essayez de nommer la fenêtre (myWindow) et d'ajouter une commande close ():

<script>
    myWindow=window.open("mailto:emailaddress@example.com");
    myWindow.close();
</script>';

ceci devrait fermer la fenêtre supplémentaire du navigateur et garder l'application e-mail ouverte. Au moins, il a travaillé pour moi.

3
répondu ezchx 2016-05-17 11:32:30

il suffit de fermer la fenêtre après un court intervalle:

var mailto_link = 'mailto:'+email+'?subject='+subject+'&body='+body_message;
var win = window.open(mailto_link,'emailWindow');
setTimeout(function() { win.close() }, 500);
3
répondu CpnCrunch 2017-02-03 22:38:27

Non, cela dépend strictement de la façon dont votre navigateur gère les nouveaux onglets. J'ai passé des heures à la recherche d'un travail autour de, solution, quoi que ce soit...

firefox: options -> onglets

safari: préférences -> onglets

0
répondu Andrei Cristian Prodan 2012-11-19 16:15:23