Откройте ссылку href mailto в новой вкладке / окне
У меня есть изображение, которое при нажатии я хочу связать с mailto:
<a id="mailto" href="mailto:hfms@live.com.my" target="_newtab" >
<img src="@Url.Content("~/Content/HomePage/email.png")" alt="email" /></a>
однако в настоящее время после его нажатия он запустит опцию электронной почты для выбора приложения mailto, и как только я выберу, ссылка mailto откроется на текущей вкладке. Это заставит пользователя покинуть приложение.
Итак, я хочу, чтобы страница для отправки электронной почты (gmail, yahoo и т. д. ) Была открыта на новой вкладке или в окне. Есть идеи, как это сделать? Я попробовал оба target= "_newtab" и target= "_blank", но оба не сработали.
любая помощь будет высоко ценится.. Спасибо...
(метод jQuery также приемлем, если нет другого способа, спасибо)
8 ответов
mailto вызывает почтовый клиент пользователей по умолчанию. Он не открывает окно или вкладку в любом случае. Если вы хотите использовать окно или вкладку, вам нужно настроить форму и разрешить ей открываться в окне/вкладке. Конечно, вам придется настроить форму для отправки почты любым способом, доступным на вашем сервере.
эта информация устарела, теперь это можно сделать, я считаю, так как gmail и другие теперь работают через ссылки браузера. однако существует проблема, что вы хотите, чтобы она открывалась только на новой вкладке, если не открывается в системном почтовом клиенте, и открывается на новой вкладке, если это клиент веб-почты, в противном случае, например, пользователи Outlook видят пустую вкладку, которая дезориентирует, espeically, так как они являются пользователями Outlook.
этот ответ основан на этом ответе откройте ссылку href mailto в новой вкладке / окне.
прямо сейчас, новые браузеры поддерживают некоторые интерфейсы веб-почты (например, Gmail, Yahoo Mail,AoL и т. д.).
таким образом, мы можем просто открыть новое окно (поддержка старого браузера, новые браузеры просто откроют новую вкладку) и добавить Резервный (в случае пользователя без javascript), используя ссылку preventDefault и default переадресация.
http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-flow-cancelation
https://developer.mozilla.org/es/docs/DOM/event.preventDefault
https://developer.mozilla.org/en-US/docs/Web/API/Window.open
вот так:
<a onClick="javascript:window.open('mailto:mail@domain.com', 'mail');event.preventDefault()" href="mailto:mail@domain.com">Send a e-mail</a>
кредит https://stackoverflow.com/a/9880404/1107020
думаю, это все.
Привет, Маркос.
для этого Вам не нужен Javascript/Jquery. Стандартная ссылка работает (кроме Firefox v30+ из-за ошибки, см. ниже).
<a href="mailto:example@example.com" target="_blank">
начиная с Firefox 30, не работает в Firefox из-за ошибка. Он открывается на той же вкладке и заменяет историю, поэтому нажатие назад не вернет вас на страницу, где была ссылка mailto:.
Я знаю, что это старый вопрос, но у этого потока был лучший набор ответов, если он найден. Я изменил ответ Маркос выше, чтобы также закрыть пустую вкладку, которая создается, если у клиента есть внешний обработчик почты
JS (w\ jQuery для обработчиков событий)
$(document).on('click', 'a[href^=mailto]', function(e) {
var checkClose, checkLoaded, event, href, i, len, loadEvents, results, t, wndw;
e.preventDefault();
href = this.href;
wndw = window.open(href, 'mail');
checkClose = function() {
console.log('checkClose');
try {
wndw.location.href;
return wndw.close();
} catch (error) {
return console.log('webmail');
}
};
t = setTimeout(checkClose, 5000);
try {
checkLoaded = function() {
console.log('loaded');
clearTimeout(t);
return t = setTimeout(checkClose, 2000);
};
wndw.onload = checkLoaded;
loadEvents = ["DomContentLoaded", "load", "beforeunload", "unload"];
results = [];
for (i = 0, len = loadEvents.length; i < len; i++) {
event = loadEvents[i];
results.push(wndw.addEventListener(event, checkLoaded));
}
return results;
} catch (error) {
return checkLoaded();
}
});
Вариант 1 (JavaScript):
<script>
// Open mailto links in a new tab
function mailto(email, subject, body) {
var url;
url = 'mailto:' + email;
url += '?subject=' + subject;
url += '&body=' + body;
window.open(url);
}
</script>
<a href="#" onclick="mailto('test@gmail.com', 'Subject', 'Body');event.preventDefault()">test@gmail.com</a>
Вариант 2 (JavaScript):
<script>
// Open mailto links in a new tab
function mailto(th) {
var url = th.getAttribute('href');
window.open(url);
}
</script>
<a href="mailto:test@gmail.com?subject=Subject&body=Body" onclick="mailto(this);event.preventDefault()">test@gmail.com</a>
Вариант 3 (jQuery):
<script>
// Open mailto links in a new tab
$('#mailto').click(function (e) {
e.preventDefault();
var url = $(this).attr('href');
window.open(url);
});
</script>
<a href="mailto:test@gmail.com?subject=Subject&body=Body" id="mailto">test@gmail.com</a>
Вариант 4 (jQuery):
<script>
// Open mailto links in a new tab
$("a[href^='mailto:']").click(function(e) {
e.preventDefault();
var href = $(this).attr('href');
var target = $(this).attr('target');
window.open(href, target ? target : '_self');
});
</script>
<a href="mailto:test@gmail.com?subject=Subject&body=Body" target="_blank">test@gmail.com</a>
HTML целевой атрибут:https://www.w3schools.com/tags/att_a_target.asp
существует дешевый html-хак для этой проблемы.....
ссылка на одной странице...
<a href="/mailto.html" target="_blank">Mail</a>
на mailto.формат html....
<meta HTTP-EQUIV="REFRESH" content="0; url=mailto:who@website.com">
If nothing pops up click.....<a href="mailto:who@website.com">Mail!</a>
_blank открывает новую вкладку / Окно, а метатег делает все остальное. ссылку как запасной вариант, конечно.
вы пробовали "средний щелчок" ("открыть в новой вкладке")? Это работает для меня
(http://forums.mozillazine.org/viewtopic.php?f=7&t=1842595)
хотя кажется особенно странным просить пользователя средний клик
в любом случае я нашел псевдо-решение, которое, похоже, работает в FF 25/ Chrome 35
1.- Настройте свою ссылку примерно так:
<a href="javascript:void()"
class="mailToLink"
data-mail="mailaddr@domain.com">mailaddr@domain.com </a>
2.- Использование javascript (с jquery в Примере) настройка onlclick событие, как:
$('.mailToLink').on('click', function(){
mailto=$(this).data('mail');
w=window.open('','_blank','',true);
w.location.href='mailto:'+mailto;
w.focus();
});
это открывает пустое новое окно / вкладку и позже изменяет свое местоположение, поэтому обработчик почтового протокола не может действовать, пока новое окно не будет открыто
не протестировано с локальным почтовым клиентом (Outlook и др.)