为什么mailto正文不能识别对象文字作为网址的一部分?

时间:2015-02-26 21:44:34

标签: javascript jquery html

我有一个对象文字

var object = {
    test: "test";
}

我在此对象上调用JSON.stringify并将其附加到查询字符串

http://example.com?parameter={"test":"test"}

但是,当我将此查询字符串附加到mailto正文时,只有这部分

http://example.com?parameter=

被包裹为超链接,而其余部分显示为纯文本。

我做的是这个:

window.location = "mailto:someone@example.com?subject=subject&body=http://example.com?parameter={"test":"test"}";

当电子邮件客户端视图显示时,只有' ='之前的部分。被包裹成超链接。

2 个答案:

答案 0 :(得分:3)

呈现电子邮件的应用程序不会将{视为网址的一部分,您可以尝试对其进行编码。它看起来不会很漂亮。

这样的东西

window.location = 'mailto:someone@example.com?subject=subject&body=' + encodeURIComponent('http://example.com?parameter=' + encodeURIComponent('{"test":"test"}'));

答案 1 :(得分:2)

这实际上与URL上接受的字符有关。你应该在这里查看这个答案:Characters allowed in a URL

因此,如果您更改此链接,您的链接将会正常工作。对此':

window.location = "mailto:someone@example.com?subject=subject&body=http://example.com?parameter={'test':'test'}";

请查看此Fiddle以替换引号