J'utilise un code JavaScript rempli avec mailto:
pour envoyer des informations via mon application Web, mais chaque fois qu'un utilisateur appuie sur le bouton Envoyer , un nouvel onglet s'ouvre dans le navigateur avant d'ouvrir l'application de mailing (Outlook, Gmail, etc.).
Existe-t-il un moyen d'empêcher l'ouverture de l'onglet vide?
Edit: Ce problème se rencontre dans tous les principaux navigateurs suivants: Internet Explorer, Firefox et Google Chrome.
J'utilise window.open()
pour envoyer des courriels. Existe-t-il des alternatives connues?
Voici comment j'envoie l'e-mail:
var mailto_link = 'mailto:'+email+'?subject='+subject+'&body='+body_message;
var win = window.open(mailto_link,'emailWindow');
Je ne souhaite pas utiliser window.location.href
, car j'affiche un message après que l'utilisateur a envoyé le courrier électronique.
Merci pour l'édition. Il y a bien une alternative:
window.location.href = "mailto:[email protected]";
alert("Thank you!");
Je ne veux pas utiliser window.location.href puisque j'affiche un message après que l'utilisateur a envoyé l'e-mail.
Je n'ai pas vraiment eu celui-ci. Vous ne quittez pas le site Web lorsque vous utilisez mailto:
avec window.location.href
La solution window.location.href d’AmShaegar fonctionne plutôt bien, mais elle a des effets secondaires dans une application complexe que je développe.
J'ai finalement trouvé cette solution qui pourrait intéresser:
$('<iframe src="mailto:[email protected]">').appendTo('body').css("display", "none");
Voir ce lecteur: http://plnkr.co/edit/J0LvQU?p=preview
L'onglet vide est ouvert par window.open()
. Tu n'as pas besoin de ça.
La syntaxe pour un lien mailto devrait être quelque chose comme
<a href="mailto:[email protected]?subject=Comments about the color blue">Contact Us</a>
Voir http://www.addressmunger.com/mailto_syntax_tutorial/ pour plus de détails.
Fermez 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);
Essayez de nommer la fenêtre (myWindow) et d’ajouter une commande close ():
<script>
myWindow=window.open("mailto:[email protected]");
myWindow.close();
</script>';
Cela devrait fermer la fenêtre supplémentaire du navigateur et laisser l'application de messagerie ouverte. Au moins cela a fonctionné pour moi.
Pour mémoire:
créez une balise d'ancrage avec l'attribut target comme ceci:
<div>
<a target="_self" href="mailto:[email protected];%[email protected]?subject=Mail%20sending&body=etc...">
Send Mail
</a>
</div>
Non, cela dépend strictement de la manière dont votre navigateur gère les nouveaux onglets. J'ai passé des heures à chercher un travail, une solution, n'importe quoi ...
firefox: options -> onglets
safari: préférences -> onglets
<a className="prom-links-anchor" tabIndex="0" aria-label="Email" href={ "mailto:" + eid + "@yahoo.com"}
role="link" nocm="true" title={ "Email"} rel="email" data-cs={contentSource} data={resultPosition + 1}
onMouseDown={this.handleMouseDown.bind(this)} onKeyDown={this.handleKeyPressEvent.bind(this)}
onContextMenu={e=> e.preventDefault()}
>
<div className="icon-email" title="Email" href={"mailto:" + eid + "@yahoo.com"} rel="email"
data-cs={contentSource} data={resultPosition + 1} />
<div className="icon-label-email" aria-hidden="true" href={"mailto:" + eid + "@yahoo.com"}
title={"Email"} rel="hc-email" data-cs={contentSource} data={resultPosition + 1}
>Email</div>
</a>