32

我正在使用mailto:填充的 JavaScript 在整个 Web 应用程序中发送信息,但每次用户按下发送按钮时,它都会在打开邮件应用程序(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,因为我在用户发送电子邮件后显示一条消息。

4

8 回答 8

28

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

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

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

我没有真正得到这个。mailto:使用时您不会离开网站window.location.href

于 2012-11-19T16:26:14.547 回答
9

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

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

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

看到这个 plunker:http ://plnkr.co/edit/J0LvQU?p=preview

于 2014-01-22T15:29:57.913 回答
5

空白选项卡由 打开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/ 。

于 2012-11-19T16:21:32.540 回答
5

稍等片刻后关闭窗口:

var mailto_link = 'mailto:'+email+'?subject='+subject+'&body='+body_message;
var win = window.open(mailto_link,'emailWindow');
setTimeout(function() { win.close() }, 500);
于 2017-02-03T22:38:27.853 回答
3

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

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

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

于 2013-10-01T15:16:20.747 回答
0

不,这完全取决于您的浏览器如何处理新标签。我花了几个小时寻找解决方法,解决方案,任何东西......

firefox:选项 -> 选项卡

safari: 偏好 -> 选项卡

于 2012-11-19T16:15:23.273 回答
0

作为记录:

使用 target 属性创建一个锚标记,如下所示:

<div>
    <a target="_self" href="mailto:mail1@domain1.com;%20mail2@domain2.com?subject=Mail%20sending&body=etc...">
        Send Mail
    </a>
</div>
于 2019-01-23T16:04:49.397 回答
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>
于 2019-01-24T06:31:58.083 回答