MailTo от Javascript - PullRequest
       8

MailTo от Javascript

14 голосов
/ 10 марта 2011

У меня есть кнопка ссылки, которая используется для создания 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 ]

10 голосов
/ 10 марта 2011

Я не думаю, что это вообще глупо! Это хорошее начало. Далее я попробую создать реальный объект ссылки в jquery, добавить его к телу и затем щелкнуть () по нему.

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

Должно работать до тех пор, пока используемая вами функция escape () избавится от всех кавычек и правильно закодирует HTML.

Но я должен сказать, что это может быть трудно получить просто правильно. Если это все еще не работает, я бы порекомендовал сделать это на стороне сервера, где ссылка размещает весь необходимый HTML-файл.

3 голосов
/ 10 марта 2011

Если вы используете jQuery, то вы можете легко создать элемент на основе разметки, которую вы строите (см. этот ответ для примера), а затем вызвать событие click ссылки, просто выполнив это:

element.click();
...