【问题标题】:Adding an Array to an a href link using Javascript/Jquery使用 Javascript/Jquery 将数组添加到 href 链接
【发布时间】:2022-01-11 01:22:02
【问题描述】:

我目前正在编写一个功能,用户将单击特定的电子邮件并将其添加到本地存储中的列表中,此后,用户将单击一个按钮,基本上该按钮应该流行一个 href 标签,以便将所有邮件地址复制到用户的默认电子邮件设置(在我的情况下为 Outlook)。

我的问题是如何将其转换为电子邮件格式?我尝试将其加载到标签中并且可以正常工作,但随后 Django 将其解释为 URL,而不是邮件列表?

到目前为止,我有以下内容:

<td class="virtualTd" onclick="putThis(this)">{{ client.email }}</td>

<script>
const emails_list = []
function putThis(control) {
var email = control.innerText;
emails_list.push(email);
}
</script>

这会用所有地址填充一个数组,

之后,用户可以点击此按钮将数据加载到本地存储,最终目的是加载outlook邮件

<a href="#" id="sendEmail" class="btn btn-primary" onclick="popEmail()"> Email Client </a>

<script>     

        function popEmail() {
           const jsonArr = JSON.stringify(emails_list);
           localStorage.setItem("array", jsonArr);
           const str = localStorage.getItem("array");
           const parsedArr = JSON.parse(str);
           console.log(parsedArr);
           var a = document.getElementById('sendEmail');
           a.href = parsedArr;
        }



</script>

【问题讨论】:

    标签: javascript html django


    【解决方案1】:

    为什么是 localStorage?

    注意:用户很可能没有设置电子邮件客户端来处理对 mailto 的点击

    也不可能有不同的Email separating character in HTML mail link is different across mail clients

    Working example

    let emails_list = []
    window.addEventListener("load",function() {
      document.getElementById("tb").addEventListener("click", e => {
        const tgt = e.target;
        if (tgt.classList.contains("virtualTd")) {
          const email = tgt.textContent.trim();
          if (!emails_list.includes(email))
          emails_list.push(email);
        }
        if (emails_list.length>0) {
          const href = `mailto:${emails_list.join(",")}?subject=Test&body=Test%20Body` // or ";" 
          console.log(href)
          document.getElementById("mailDiv").innerHTML = `<a 
          href="${href}" class="btn btn-primary">Email Client</a>`
        }    
      });
    })
    <table>
      <tbody id="tb">
        <tr>
          <td>Joe</td>
          <td class="virtualTd">Joe@mail.com</td>
        </tr>
        <tr>
          <td>Fred</td>
          <td class="virtualTd">Fred@mail.com</td>
        </tr>
      </tbody>
    </table>
    <div id="mailDiv"></div>

    【讨论】:

    • 感谢它几乎是完美的,但由于某种原因没有出现弹出窗口,控制台消息已正确填充但通常当我有电子邮件链接时,Outlook 控制台会弹出 - 我完全同意与您对电子邮件设置的评论,但公司使用 Outlook,因此它必须仅适用于 Outlook
    • 你不能从这里运行它。它必须来自网页 - 所以会阻止这种链接
    • 我意识到这一点,但如果我在我的项目上运行它,则没有 Outlook 弹出窗口
    • 我的错。所以用来防止Default。请删除该行
    • 查看更新。我添加了一个工作示例
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 1970-01-01
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    相关资源
    最近更新 更多