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