tag link jquery razor href target mailto

jquery - tag a link



Abra el enlace href mailto en una nueva pestaña/ventana (8)

Tengo una imagen que al hacer clic, quiero enlazar a un correo para:

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

Sin embargo, actualmente, una vez que se hace clic, se abrirá la opción de correo electrónico para elegir una aplicación mailto, y una vez que elija, el enlace mailto se abrirá en la pestaña actual. Esto hará que el usuario salga de la aplicación.

Por lo tanto, quiero que la página de correo electrónico enviado (por gmail, yahoo, etc.) esté abierta en una nueva pestaña o en una ventana. ¿Alguna idea de cómo hacer esto? Intenté target = "_ newtab" y target = "_ blank" pero ambos no funcionaron.

Cualquier ayuda será muy apreciada .. Gracias ...

(El método jQuery también es aceptable si no hay otra forma, gracias)


¿Ha intentado hacer clic con el botón central ("Abrir en una nueva pestaña")? Esto funciona para mi

( http://forums.mozillazine.org/viewtopic.php?f=7&t=1842595 )

Aunque parece particularmente extraño pedirle al usuario que haga clic en el botón central.

De todos modos, he encontrado una pseudo solución que parece funcionar en FF 25 / Chrome 35

1.- Configura tu enlace algo como esto:

<a href="javascript:void()" class="mailToLink" data-mail="[email protected]">[email protected] </a>

2.- Usando javascript (con jquery en el ejemplo) configura un evento onlclick como:

$(''.mailToLink'').on(''click'', function(){ mailto=$(this).data(''mail''); w=window.open('''',''_blank'','''',true); w.location.href=''mailto:''+mailto; w.focus(); });

Esto abre una nueva ventana / pestaña en blanco y luego cambia su ubicación, por lo que el controlador de protocolo de correo no puede actuar hasta que la nueva ventana ya esté abierta

No probado con el cliente de correo local (Outlook et al.)


Esta respuesta se basa en esta respuesta Abra el enlace href mailto en la nueva pestaña / ventana .

En este momento, los nuevos navegadores admiten algunas interfaces de correo web (como Gmail, Yahoo Mail, AoL, etc.).

Por lo tanto, simplemente podemos abrir una nueva ventana (Compatibilidad con el navegador anterior, los nuevos navegadores solo abrirán una nueva pestaña) y agregar un respaldo (en el caso de un usuario sin javascript) utilizando preventDefault y la redirección de enlaces predeterminada.

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

Al igual que:

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

http://jsfiddle.net/cNUNP/

Crédito a https://.com/a/9880404/1107020

Supongo que eso es todo.

Saludos, Marcos.


Hay un html-hack barato para este problema ...

El enlace en una página ...

<a href="/mailto.html" target="_blank">Mail</a>

En mailto.html ....

<meta HTTP-EQUIV="REFRESH" content="0; url=mailto:[email protected]"> If nothing pops up click.....<a href="mailto:[email protected]">Mail!</a>

_blank abre una nueva pestaña / ventana y el metatag hace el resto. Enlace como recurso alternativo.


No necesitas Javascript / Jquery para esto. Un enlace estándar funciona (excepto Firefox v30 + debido a un error, ver más abajo).

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

A partir de Firefox 30, no funciona en Firefox debido a un bug . Se abre en la misma pestaña Y reemplaza el historial, por lo que devolverlo no lo llevará a la página donde estaba el enlace mailto :.


Sé que esta es una pregunta antigua, pero este hilo tenía el mejor conjunto de respuestas si se encontraba. Modifiqué la Respuesta de Marcos arriba para cerrar también la pestaña en blanco que se crea si el cliente tiene un controlador de correo externo

respuesta de referencia

JS (w / jQuery para controladores de eventos)

$(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


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>

Atributo de destino HTML: https://www.w3schools.com/tags/att_a_target.asp


esta información está desactualizada, ahora es posible hacerlo, creo, ya que gmail y otros trabajan ahora a través de los enlaces del navegador. Sin embargo, existe el problema de que solo desearía que se abra en una nueva pestaña si NO se abre en un cliente de correo del sistema, y ​​que se abra en una nueva pestaña si es un cliente de correo web. De lo contrario, por ejemplo, los usuarios de Outlook ven una pestaña en blanco. Lo cual es desorientador, sobre todo porque son usuarios de Outlook.


mailto llama al cliente de correo electrónico predeterminado de los usuarios. No abre una ventana o pestaña en ningún caso. Si desea utilizar una ventana o pestaña, debe configurar un formulario y permitir que el formulario se abra en su ventana / pestaña. Por supuesto, tendrá que configurar el formulario para enviar correo con cualquier método disponible en su servidor.