【问题标题】:Escaping & for display in mail client (mailto link)转义并在邮件客户端中显示(mailto 链接)
【发布时间】:2011-09-26 14:32:04
【问题描述】:

我有一个这样的 JavaScript 函数:

var strBody = encodeURI(window.location.href);
var strSubject = encodeURI(document.title);
var mailto_link = "mailto:?subject=" + encodeURI(strSubject) + "&body=" + strBody;

此代码在超链接的 onclick 事件上执行,并打开邮件客户端 (mailto://)。但是,页面的标题有几个 & 符号,但标题只有在第一个 & 之前才被拾取。网址总是被拾取。

转义 & 并将其显示在邮件客户端主题行中的正确 JavasSript 是什么?

【问题讨论】:

    标签: javascript urlencode encode


    【解决方案1】:
    var encoded_body = encodeURIComponent(window.location.href);
    var encoded_subject = encodeURIComponent(document.title);
    var mailto_link = "mailto:?subject=" + encoded_subject + "&body=" + encoded_body;
    

    应该这样做(encodeURIComponent 而不是encodeURI)。

    在您的原始代码中,您还错误地对 subject 进行了双重编码(一次在第 2 行,然后在第 3 行)。

    我冒昧地重命名了您的变量,以便更清楚地表明它们包含编码的 subjectbody,而不是原始文本。

    【讨论】:

    • 不要使用escape,它已被弃用,因为它不能正常工作。
    • @Quentin 很好发现。我现在有点误会你的答案了,对不起:)。
    • 那也没用?对于像 a & b & c 这样的标题,我只能得到“a”。
    • @gss5:它适用于我,我在 Chrome 和 IE 中结合 Outlook 进行了测试。也许您遇到了与特定邮件客户端不兼容的问题?
    • @gss5:听起来您的邮件客户端行为异常。您测试了哪些邮件客户端?
    【解决方案2】:

    您希望encodeURIComponent 不编码URI。

    【讨论】:

      猜你喜欢
      • 2015-10-28
      • 2011-11-29
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 2015-01-26
      • 2010-11-21
      • 1970-01-01
      相关资源
      最近更新 更多