如何防止mailto事件在浏览器中打开新选项卡

时间:2012-11-19 16:09:33

标签: javascript mailto

我使用填充JavaScript的mailto:在我的网络应用程序中发送信息,但每次用户按下发送按钮时,它会在打开浏览器之前在浏览器中打开一个新标签页邮件应用程序(Outlook,Gmail等)。

有没有办法防止空白标签打开?


编辑:以下所有主流浏览器都会遇到此问题:Internet Explorer,Firefox和Google Chrome。

我使用window.open()发送电子邮件,是否有其他已知替代方案?

以下是我发送电子邮件的方式:

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

我不想使用window.location.href,因为我在用户发送电子邮件后显示了一条消息。

8 个答案:

答案 0 :(得分:24)

感谢您的编辑。确实有另一种选择:

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

我不想使用window.location.href,因为我正在显示一个   用户发送电子邮件后的消息。

我真的没有得到这个。将mailto:window.location.href

一起使用时,您不会离开网站

答案 1 :(得分:8)

AmShaegar的 window.location.href 解决方案效果很好,但它在我开发的复杂应用程序中引起了副作用。

我终于想出了一个可能感兴趣的解决方案:

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

请参阅此plunker:http://plnkr.co/edit/J0LvQU?p=preview

答案 2 :(得分:4)

空白标签由window.open()打开。你不需要那个。

mailto链接的语法应该类似于

<a href="mailto:your@email.address?subject=Comments about the color blue">Contact Us</a>

有关详细信息,请参阅http://www.addressmunger.com/mailto_syntax_tutorial/

答案 3 :(得分:3)

短暂间隔后关闭窗口:

var mailto_link = 'mailto:'+email+'?subject='+subject+'&body='+body_message;
var win = window.open(mailto_link,'emailWindow');
setTimeout(function() { win.close() }, 500);

答案 4 :(得分:2)

尝试命名窗口(myWindow)并添加close()命令:

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

这应该关闭额外的浏览器窗口并保持电子邮件应用程序打开。至少它对我有用。

答案 5 :(得分:1)

作记录:

使用目标属性创建锚标记,如下所示:

<div>
    <a target="_self" href="mailto:mail1@domain1.com;%20mail2@domain2.com?subject=Mail%20sending&body=etc...">
        Send Mail
    </a>
</div>

答案 6 :(得分:0)

不,这严格取决于浏览器处理新标签的方式。我花了几个小时寻找解决方案,解决方案,任何事情......

firefox:options - &gt;翼片

safari:preferences - &gt;翼片

答案 7 :(得分:0)

<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>