it-swarm.com.de

Öffnen Sie den Link href mailto in einem neuen Tab/Fenster

Ich habe ein Bild, das beim Klicken auf einen mailto-Link verweist:

 <a id="mailto" href="mailto:[email protected]" target="_newtab" >
        <img src="@Url.Content("~/Content/HomePage/email.png")" alt="email" /></a>

Im Moment wird jedoch nach dem Anklicken die E-Mail-Option zur Auswahl einer Mailto-Anwendung aufgerufen. Sobald ich mich entschieden habe, ist der Mailto-Link in der aktuellen Registerkarte geöffnet. Dies bewirkt, dass der Benutzer die Anwendung verlässt.

Ich möchte also, dass die Seite per E-Mail (per Google Mail, Yahoo usw.) in einem neuen Tab oder in einem Fenster geöffnet wird. Irgendeine Idee, wie das geht? Ich habe sowohl target = "_ newtab" als auch target = "_ blank" ausprobiert, aber beide haben nicht funktioniert.

Jede Hilfe wird sehr geschätzt .. Danke ...

(jQuery-Methode ist auch akzeptabel, wenn es keine andere Möglichkeit gibt, danke)

17
shennyL

mailto ruft den Standard-E-Mail-Client des Benutzers auf. In keinem Fall wird ein Fenster oder eine Registerkarte geöffnet. Wenn Sie ein Fenster oder eine Registerkarte verwenden möchten, müssen Sie ein Formular konfigurieren und zulassen, dass das Formular in Ihrem Fenster/Ihrer Registerkarte geöffnet wird. Natürlich müssen Sie das Formular so konfigurieren, dass E-Mails mit der auf Ihrem Server verfügbaren Methode gesendet werden.

10
Scott

diese Informationen sind veraltet, jetzt ist dies möglich, da Google Mail und andere jetzt über Browser-Links funktionieren. Es gibt jedoch das Problem, dass Sie nur möchten, dass es auf einer neuen Registerkarte geöffnet wird, wenn es NICHT in einem System-Mail-Client geöffnet wird, und auf einer neuen Registerkarte, wenn es sich um einen Webmail-Client handelt. Das ist desorientierend, vor allem, da sie Outlook-Benutzer sind.

23
RedScourge

Diese Antwort basiert auf dieser Antwort Öffnen Sie den Link href mailto in einem neuen Tab/Fenster .

Derzeit unterstützen neue Browser einige Webmail-Schnittstellen (wie Google Mail, Yahoo Mail, AoL usw.).

So können wir einfach ein neues Fenster öffnen (älteren Browser unterstützen, neue Browser öffnen nur einen neuen Tab) und mithilfe von preventDefault und der Standard-Linkumleitung einen Fallback (bei Nicht-Javascript-Benutzern) hinzufügen.

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

Wie so:

<a onClick="javascript:window.open('mailto:[email protected]', 'mail');event.preventDefault()" href="mailto:[email protected]">Send a e-mail</a>

http://jsfiddle.net/cNUNP/

Gutschrift auf https://stackoverflow.com/a/9880404/110702

Ich schätze, das ist alles.

Grüße, Marcos.

18
Marcos Eusebi

Du brauchst dafür kein Javascript/Jquery. Ein Standard-Link funktioniert (außer Firefox v30 + aufgrund eines Fehlers, siehe unten).

<a href="mailto:[email protected]" target="_blank">

Ab Firefox 30 funktioniert es nicht in Firefox aufgrund eines Fehlers . Es wird auf derselben Registerkarte geöffnet und ersetzt den Verlauf, so dass Sie nicht zurück zu der Seite gelangen, auf der sich der Link mailto: befunden hat.

13
Costa

Ich weiß, das ist eine alte Frage, aber dieser Thread hatte die besten Antworten, wenn er gefunden wurde. Ich habe Marcos 'Antwort oben geändert, um auch die leere Registerkarte zu schließen, die erstellt wird, wenn der Client über einen externen E-Mail-Handler verfügt

Referenzantwort

JS (w\jQuery für Ereignishandler)

$(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();
  }
});

jsfiddle

2
Sampson Crowley

Variante 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('[email protected]', 'Subject', 'Body');event.preventDefault()">[email protected]</a>

Variante 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:[email protected]?subject=Subject&body=Body" onclick="mailto(this);event.preventDefault()">[email protected]</a>

Variante 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:[email protected]?subject=Subject&body=Body" id="mailto">[email protected]</a>

Variante 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:[email protected]?subject=Subject&body=Body" target="_blank">[email protected]</a>

HTML-Zielattribut: https://www.w3schools.com/tags/att_a_target.asp

0
Botyk