Pregunta sobre html, mailto, javascript – mailto usando javascript

40

Quiero abrir una nueva plantilla de correo de Outlook con 'Para' dirección 'cada vez que un usuario haga clic en una imagen. He devuelto mi código en una página html (vinculada a la imagen), siempre que cargue el javascript debería abrir una nueva plantilla de correo. Pero la funcionalidad no está funcionando. Por favor, déjame saber qué está mal en mi código.

<code>body onLoad="redirect()"

script language="JavaScript"

function redirect() 

      var email = "[email protected]omething.com"
      var mailto_link = 'mailto:' + email
      window = window.open(mailto_link, 'emailWindow')
      if (window && window.open && !window.closed)         
          window.close()
</code>
¿Es debido a un bloqueador de ventanas emergentes? Ramesh
window es una variable de solo lectura. Rob W

Tu respuesta

5   la respuesta
58

No hay necesidad de jQuery. Y no es necesario abrir una nueva ventana. Protocolos que no devuelven datos HTTP al navegador (mailto:, irc://, magnet:, ftp:// (<- depende de cómo se implementa, normalmente el navegador tiene un cliente FTP incorporado)) se puede consultar en la misma ventana sin perder el contenido actual. En tu caso:

<code>function redirect()
{
    window.location.href = "mailto:[email protected]";
}
<body onload="javascript: redirect();">
</code>

O simplemente directamente

<code><body onload="javascript: window.location.href='mailto:[email protected]';">
</code>
Cabe señalar, que el navegador todavía activará elonbeforeunload-Evento:window.onbeforeunload = () => {console.log("onbeforeunload")}; window.location.href = "mailto:[email protected]"; D B
21

Por favor encuentra elcodigo en jsFiddle. Utiliza jQuery para modificar el href del enlace. Puedes usar cualquier otra biblioteca en su lugar. Deberia de funcionar.

HTML

<code><a id="emailLnk" href="#">
    <img src="http://ssl.gstatic.com/gb/images/j_e6a6aca6.png">
</a>
</code>

JS

<code>$(document).ready(function() {
    $("#emailLnk").attr('href',"mailto:[email protected]");
});​
</code>

ACTUALIZAR

Otro ejemplo de código, si la identificación se conoce solo durante el evento de clic

<code>$(document).ready(function() {
    $("#emailLnk").click(function()
     {
         alert('h');
         document.location.href = "mailto:[email protected]";
     });
});​
</code>
4

Simplemente he usado este código javascript (usando jquery pero no es estrictamente necesario):

<code>    $( "#button" ).on( "click", function(event) {
         $(this).attr('href', 'mailto:[email protected]?subject=hello');
    });
</code>

Cuando los usuarios hacen clic en el enlace, reemplazamos el atributo href del elemento pulsado.

Tenga cuidado de no evitar el comportamiento predeterminado (event.preventDefault), debemos dejar de hacerlo porque acabamos de reemplazar el href donde ir

Creo que los robots no pueden verlo, la dirección está protegida de spam.

6

Con JavaScript puede crear un enlace 'sobre la marcha' usando algo como:

<code>    var mail = document.createElement("a");
    mail.href = "mailto:[email protected]";
    mail.click();
</code>

El navegador redirige esto a algún cliente de correo instalado en la máquina sin perder el contenido de la ventana actual ... y no necesitaría ninguna API como 'jQuery'.

window.open('mailto') normalmente deja una pestaña en blanco abierta con mailto en la URL, por lo que de esta manera parece mucho mejor Unknownweirdo
4

Puedes usar el sencillomailto, ver más abajo para el marcado simple.

<code><a href="mailto:[email protected]">Click here to mail</a>
</code>

Una vez que haga clic, abrirá su Outlook o el cliente de correo electrónico que haya configurado.

Hola Grant, gracias por editar mi terminología para usar. Tengo prisa también tipo Allan

Preguntas relacionadas