Добавление onclick = window.location = mailto: где получатель является переменной в функции - PullRequest
1 голос
/ 19 мая 2019

У меня есть страница, которая используется врачами, где они могут написать электронное письмо пациенту, выбрать отскок документов и через «mailto» создать форматированное электронное письмо.Это не работает в Safari iOS.

Проблема, которую я обнаружил, заключается в том, что mailto не работает с Safari iOS, если он запускается с домашнего экрана (как веб-приложение).Он работает с помощью onclick = window.location. Я пытался реализовать его в своей функции, но он не работает

, поэтому я пытаюсь реализовать что-то вроде этого:

<a href="#" onclick="window.location='mailto:me@any.com?subject=Docs&body=Hallo%20you%20and%20links'; return false;" class="noHighlight">Write and email</a>

в своей функции:

function buildMailto(recipient, subject, body) {
  var mailToLink = "mailto:" + recipient + "?";
  var mailContent = "Subject=" + subject + "&";
  mailContent += "cc=testemail@gmail.com&";
  mailContent += "body="
  mailContent += encodeURIComponent(body);
  a.href = mailToLink + mailContent;
}

Я пытаюсь редактировать:

function buildMailto(recipient, subject, body) {
var mailToLink = " '#'  onclick=\"window.location='mailto:" + recipient +"?";
  var mailContent = "Subject=" + subject + "&";
  mailContent += "cc=testemail@gmail.com&";
  mailContent += "body="
  mailContent += encodeURIComponent(body);
  mailContent +=  "return false;  class='noHighlight' ";
  a.href = mailToLink + mailContent;
}

На данный момент нет результатов

Ответы [ 3 ]

0 голосов
/ 19 мая 2019

Было несколько проблем с вашим кодом:

  • a никогда не определялся. Дайте вашей ссылке идентификатор и выберите идентификатор с помощью document.getElementById()
  • Вы не можете установить атрибут href ссылки и "разорвать", используя двойные кавычки, чтобы добавить атрибут onclick к элементу. Вместо этого:
  • добавить событие click, используя .addEventListener(). В качестве альтернативы вы можете использовать .setAttribute('onclick', 'window.location.href = "' + mailToLink + mailContent + '"; return false;');, если хотите видеть событие click с помощью инспектора DOM вашего браузера, но на самом деле это не имеет смысла.
    function buildMailto(recipient, subject, body) {
    var mailToLink = "mailto:" + recipient +"?";
      var mailContent = "Subject=" + subject + "&";
      mailContent += "cc=testemail@gmail.com&";
      mailContent += "body="
      mailContent += encodeURIComponent(body);
      document.getElementById('myLink').addEventListener('click', function() {
        window.location.href = mailToLink + mailContent;
        return false;
      });
    }
    
    buildMailto('foo@bar.baz', 'a subject', 'mail content');
    <a href="#" id="myLink" class="noHighlight">Write and email</a>
0 голосов
/ 19 мая 2019

В вашей функции buildMailto вы не указали, что такое a.Вместо того, чтобы обновлять значение атрибута onclick при щелчке ссылки привязки, вы должны создать почтовый URL и обновить window.location.href.Вот пример:

<a href="#" id="email-link" class="noHighlight">Write and email</a>

Прослушиватель событий для привязки:

document.querySelector('#email-link').addEventListener('click', function (e) {
    e.preventDefault();

    buildMailto('me@any.com', 'Docs', 'Hi, there!');
});

Измените buildMailto на следующее:

function buildMailto(recipient, subject, body) {
    var mailLink = "mailto:" + recipient + "?";
    mailLink += "Subject=" + subject + "&";
    mailLink += "cc=testemail@gmail.com&";
    mailLink += "body="
    mailLink += encodeURIComponent(body);
    window.location.href = mailLink;
}
0 голосов
/ 19 мая 2019

Попробуйте встроить свою форму в форму. Как это:

<form action="mailto:me@any.com?subject=Docs&body=Hallo%20you%20and%20links" method="GET">
  <button class="noHighlight" type="submit">Write and email</a>
</form>
...