【问题标题】:MailTo From Javascript来自 Javascript 的 MailTo
【发布时间】:2011-07-13 00:30:40
【问题描述】:

我有一个链接按钮,用于从页面内容构建邮件。在不打开空白窗口或干扰调用它的窗口的情况下从 javascript 启动它的最佳方法是什么?

function Email()
{
    var sMailTo = "mailto:";
    var sBody = "";

    var alSelectedCheckboxes = new Array();
    $("input:checkbox[CheckBoxType=Email]:checked").each(function()
    {
        alSelectedCheckboxes.push($(this).val());
    });

    if (alSelectedCheckboxes.length > 0)
    {
        for (var i=0; i<alSelectedCheckboxes.length; i++)
        {
            sBody += alSelectedCheckboxes[i];
            sBody += "\n";
        }

        sMailTo += escape("<Insert Recipients Here>") +"?subject=" +escape("<Insert Subject Here>") +"&body=" +escape(sBody);
        window.location.href = sMailTo;
    }
    else
    {
        alert("Please select some results");
    }
}

简单的功能如上。 window.location.href 不能正常工作,除非它是 Firefox/Chrome(它在 IE8 中重绘页面)。我也尝试过 window.open(sMailTo, "_self") 但在 IE8 中这再次破坏了调用它的页面。

我确定这是一个愚蠢的问题.... :-)

谢谢

【问题讨论】:

  • 不要代表用户悄悄地这样做。将其添加为 html 链接。
  • javascript 由链接执行。 mailto 的内容是动态的,但是我们需要先做一些 javascript 来确定要发送的邮件正文是什么

标签: javascript jquery mailto


【解决方案1】:

我不认为这很愚蠢!这是一个好的开始。我接下来要尝试的是在 jquery 中创建一个实际的链接对象,将其附加到正文中,然后单击()它。

//window.location.href = sMailTo;
$('<a href="' + sMailTo + '">click</a>').appendTo('body').click().remove();

只要您使用的 escape() 函数去掉所有引号并正确编码 html,就应该可以工作。

但我不得不说,这可能很难让 正确。如果它仍然不起作用,我建议在服务器端进行,链接会发布所有需要的 html。

【讨论】:

    【解决方案2】:

    如果您使用的是 jQuery,那么您可以轻松地根据您构建的标记创建一个元素(请参阅 this answer 示例),然后只需执行以下操作即可调用链接的点击事件:

    element.click();
    

    【讨论】:

    • Safari 将阻止允许触发 click() 事件!
    猜你喜欢
    • 2011-12-27
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 2014-01-28
    相关资源
    最近更新 更多