我有一个javascript代码,用于生成包含正文链接的电子邮件。
某些链接在链接中有空格,因此链接会被删除。
我尝试用asacii代码替换空格,但它没有用。
var lineBreak = "%0D%0A";
function GetMailToInfo(attachment, body) {
attachment = attachment ? attachment.replace(" ","%0D%0A") + lineBreak + lineBreak : "";
body += attachment + signature;
window.location.href = "mailto:" + emailTo + "?subject=" + subject() + "&body=" + body;
}
如何解决这个问题?
答案 0 :(得分:1)
您的问题很可能是因为String.replace
仅在使用string
作为第一个参数时替换了第一个匹配项。请参阅this MDN documentation。
我建议循环播放:
while (attachment.indexOf(" ") >= 0) {
attachment = attachment.replace(" ", "%0A%0D");
}
或使用RegEx
执行基于模式的替换。
但是,Quentin的解决方案是编写字符串以便安全使用URI的正确方法。我的答案是针对更一般的情况,它可能不是URI字符串。
答案 1 :(得分:1)
使用encodeURIComponent
正确转义网址中的特殊字符:
window.location.href =
"mailto:" + encodeURIComponent(emailTo) +
"?subject=" + encodeURIComponent(subject()) +
"&body=" + encodeURIComponent(body);