Как предотвратить событие mailto от открытия новой вкладки в браузере
Я использую заполненный JavaScript mailto:
для отправки информации в моем веб-приложении, но каждый раз, когда пользователь нажимает кнопку "Отправить", он открывает новую вкладку в браузере перед открытием приложения для почтовой рассылки (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
, так как я показываю сообщение после того, как пользователь отправил электронное письмо.
Ответы
Ответ 1
Спасибо за редактирование. Существует действительно альтернатива:
window.location.href = "mailto:[email protected]";
alert("Thank you!");
Я не хочу использовать window.location.href, так как я показываю сообщение после того, как пользователь отправил электронное письмо.
Я действительно не понял этого. Вы не покидаете сайт при использовании mailto:
с window.location.href
Ответ 2
Решение window.location.href от AmShaegar работает очень хорошо, но это вызвало побочный эффект в сложном приложении, которое я разрабатывал.
Наконец я придумал это решение, которое может быть интересно:
$('<iframe src="mailto:[email protected]">').appendTo('body').css("display", "none");
Смотрите этот плункер: http://plnkr.co/edit/J0LvQU?p=preview
Ответ 3
Пустое поле открывается window.open()
. Вам это не нужно.
Синтаксис для ссылки mailto должен выглядеть примерно так:
<a href="mailto:[email protected]?subject=Comments about the color blue">Contact Us</a>
Подробнее см. http://www.addressmunger.com/mailto_syntax_tutorial/.
Ответ 4
Закройте окно через короткий промежуток времени:
var mailto_link = 'mailto:'+email+'?subject='+subject+'&body='+body_message;
var win = window.open(mailto_link,'emailWindow');
setTimeout(function() { win.close() }, 500);
Ответ 5
Попробуйте присвоить имя окну (myWindow) и добавить команду close():
<script>
myWindow=window.open("mailto:[email protected]");
myWindow.close();
</script>';
Это должно закрыть дополнительное окно браузера и открыть приложение электронной почты. По крайней мере, это сработало для меня.
Ответ 6
Нет, это строго зависит от того, как ваш браузер обрабатывает новые вкладки. Я потратил часы на поиски работы, решения, что-то...
firefox: параметры → вкладки
сафари: предпочтения → вкладки
Ответ 7
Для записи:
создайте тег привязки с целевым атрибутом следующим образом:
<div>
<a target="_self" href="mailto:[email protected];%[email protected]?subject=Mail%20sending&body=etc...">
Send Mail
</a>
</div>
Ответ 8
почему я не могу разместить код здесь? это все еще открывает новую вкладку даже без цели.
Ответ 9
<a className="prom-links-anchor" tabIndex="0" aria-label="Email" href={ "mailto:" + eid + "@yahoo.com"}
role="link" nocm="true" title={ "Email"} rel="email" data-cs={contentSource} data={resultPosition + 1}
onMouseDown={this.handleMouseDown.bind(this)} onKeyDown={this.handleKeyPressEvent.bind(this)}
onContextMenu={e=> e.preventDefault()}
>
<div className="icon-email" title="Email" href={"mailto:" + eid + "@yahoo.com"} rel="email"
data-cs={contentSource} data={resultPosition + 1} />
<div className="icon-label-email" aria-hidden="true" href={"mailto:" + eid + "@yahoo.com"}
title={"Email"} rel="hc-email" data-cs={contentSource} data={resultPosition + 1}
>Email</div>
</a>