Pytanie w sprawie mailto, html, javascript – mailto za pomocą javascript

40

Chcę otworzyć nowy szablon poczty Outlook z adresem „Adres”, gdy użytkownik kliknie obraz. Zwróciłem mój kod na stronie html (połączonej z obrazem), gdy ładuje javascript powinien otworzyć nowy szablon poczty. Ale funkcjonalność nie działa. Proszę dać mi znać, co jest nie tak w moim kodzie.

<code>body onLoad="redirect()"

script language="JavaScript"

function redirect() 

      var email = "[email protected]"
      var mailto_link = 'mailto:' + email
      window = window.open(mailto_link, 'emailWindow')
      if (window && window.open && !window.closed)         
          window.close()
</code>
window jest zmienną tylko do odczytu. Rob W
Czy jest to spowodowane blokowaniem wyskakujących okienek? Ramesh

Twoja odpowiedź

5   odpowiedzi
4

Po prostu użyłem tego kodu javascript (używając jquery, ale nie jest to konieczne):

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

Gdy użytkownicy klikają łącze, zastępujemy atrybut href klikniętego elementu.

Bądź ostrożny, nie przeszkadzaj domyślnemu składowi (event.preventDefault), musimy to zrobić, ponieważ właśnie zastąpiliśmy href, gdzie iść

Myślę, że roboty tego nie widzą, adres jest chroniony przed spamem.

21

Proszę znajdźkod w jsFiddle. Używa jQuery do modyfikacji href łącza. Możesz użyć dowolnej innej biblioteki na swoim miejscu. To powinno działać.

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>

AKTUALIZACJA

Kolejny przykład kodu, jeśli identyfikator jest znany tylko podczas zdarzenia kliknięcia

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

Możesz użyć prostegomailto, patrz poniżej, aby zobaczyć proste znaczniki.

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

Po kliknięciu otworzy się program Outlook lub dowolny ustawiony klient poczty e-mail.

Hej Grant, dzięki za edycję mojej terminologii. Ja też się śpieszyłem. Allan
6

Dzięki JavaScript możesz utworzyć link „w locie”, używając czegoś takiego:

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

To jest przekierowywane przez przeglądarkę do jakiegoś klienta poczty zainstalowanego na komputerze bez utraty zawartości bieżącego okna ... i nie potrzebujesz żadnego API, takiego jak 'jQuery'.

window.open('mailto') zwykle pozostawia pustą kartę otwartą z mailto w adresie URL, więc ten sposób wydaje się o wiele ładniejszy Unknownweirdo
58

Nie potrzeba jQuery. I nie trzeba otwierać nowego okna. Protokoły, które nie zwracają danych HTTP do przeglądarki (mailto:, irc://, magnet:, ftp:// (<- zależy od tego, w jaki sposób jest zaimplementowany, zwykle przeglądarka ma wbudowanego klienta FTP)) może zostać zapytana w tym samym oknie bez utraty bieżącej zawartości. W Twoim przypadku:

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

Lub po prostu bezpośrednio

<code><body onload="javascript: window.location.href='mailto:[email protected]';">
</code>
Należy zauważyć, że przeglądarka nadal będzie uruchamiaćonbeforeunload-Zdarzenie:window.onbeforeunload = () => {console.log("onbeforeunload")}; window.location.href = "mailto:[email protected]"; D B

Powiązane pytania