首页 文章

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

提问于
浏览
23

我正在使用填充JavaScript的 mailto: 在我的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 ,因为我在用户发送电子邮件后显示一条消息 .

6 回答

  • 4

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

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

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

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

  • 3

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

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

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

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

  • 23

    空白选项卡由 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/ .

  • 2

    短暂间隔后关闭窗口:

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

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

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

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

  • 0

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

    firefox:options - > tabs

    safari:preferences - > tabs

相关问题