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

Jef*_*oel 28 javascript mailto

我使用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');
Run Code Online (Sandbox Code Playgroud)

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

AmS*_*gar 26

谢谢你的编辑.确实有另一种选择:

window.location.href = "mailto:mail@domain.tld";
alert("Thank you!");
Run Code Online (Sandbox Code Playgroud)

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

我真的没有得到这个.使用时,您没有离开网站mailto:window.location.href

  • 你在使用`mailto:`时离开网站,例如,如果将gmail设置为`mailto:`协议的默认处理程序.铬://设置/处理器 (9认同)
  • 此外,这在 Firefox 上也无法正常工作。如果您打开了 websocket 连接,当您执行此操作时,firefox 将立即终止它(即使页面不导航)。 (2认同)

Gui*_*ume 10

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

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

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

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

  • 值得注意.在chrome中,如果站点位于https上,它将阻止创建的iframe作为混合内容,这会导致mailto永远不会触发. (3认同)
  • 这对我来说似乎是最合适的解决方案,特别是如果你想避免与`href`的链接,因为那些被垃圾邮件机器人抓取. (2认同)

Sam*_*lle 5

空白选项卡由 打开window.open()。你不需要那个。

mailto 链接的语法应该类似于

<a href="mailto:your@email.address?subject=Comments about the color blue">Contact Us</a>
Run Code Online (Sandbox Code Playgroud)

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


Cpn*_*nch 5

只需在短时间间隔后关闭窗口:

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