Подтвердить что ты не робот

MailTo из Javascript

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

Я уверен, что это глупый вопрос....: -)

Спасибо

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

element.click();