MailTo来自Javascript

时间:2011-03-10 20:02:03

标签: javascript jquery mailto

我有一个链接按钮,用于从页面内容构建mailto。什么是从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中再次打破了它所调用的页面。

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

由于

2 个答案:

答案 0 :(得分:10)

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

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

只要你正在使用的escape()函数摆脱所有引号并正确编码html,它应该可以工作。

但我必须说,这可能很难让只是正确。如果它仍然不起作用,我建议在服务器端进行链接POSTS所需的所有html。

答案 1 :(得分:3)

如果你正在使用jQuery,那么你可以根据你构建的标记轻松创建一个元素(例如,参考this answer),然后通过简单地执行以下操作来调用链接的click事件:

element.click();