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

Как предотвратить событие 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, так как я показываю сообщение после того, как пользователь отправил электронное письмо.

4b9b3361

Ответ 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>