为 mailto link 编码 json 数据
Encoding json data for a mailto link
如何在查询参数中使用 JSON 数据对 mailto link 进行正确编码,以便 link 在某些 JSON 数据可能出现时按预期工作包括空格?
这是一个简单的例子:
var data = {
"Test": "Property with spaces"
};
var mailTo = 'mailto:?body=http://www.google.com/?body=' + JSON.stringify(data);
document.getElementById("link").href = mailTo;
点击 link 后电子邮件中的结果 link 如下所示:
这是一个 JSBin,展示了我在说什么:
https://jsbin.com/vuweyemeji/1/edit?html,js,output
编辑:添加 encodeURI() 或 encodeURIComponent() 似乎对我不起作用。我尝试在数据对象周围添加这些方法中的任何一种,当我单击 mailto link 时,url 在 outlook 中看起来仍然相同。
您需要使用 encodeURIComponent
两次,因为您是在另一个参数中对一个参数进行编码。
您的 link 正在使用 mailto
协议并使用 body
参数对哪些内容进行编码。但是,在该内容中,您正在输入一个带有参数的 URL,因此,该参数也应该被编码。
试试这个:
var data = {"Test": "Property with spaces"};
var mailTo = 'mailto:?body=' + encodeURIComponent('http://www.google.com/?body=' + encodeURIComponent(JSON.stringify(data)));
document.getElementById("link").href = mailTo;
<a id='link'>anchor</a>
如何在查询参数中使用 JSON 数据对 mailto link 进行正确编码,以便 link 在某些 JSON 数据可能出现时按预期工作包括空格?
这是一个简单的例子:
var data = {
"Test": "Property with spaces"
};
var mailTo = 'mailto:?body=http://www.google.com/?body=' + JSON.stringify(data);
document.getElementById("link").href = mailTo;
点击 link 后电子邮件中的结果 link 如下所示:
这是一个 JSBin,展示了我在说什么:
https://jsbin.com/vuweyemeji/1/edit?html,js,output
编辑:添加 encodeURI() 或 encodeURIComponent() 似乎对我不起作用。我尝试在数据对象周围添加这些方法中的任何一种,当我单击 mailto link 时,url 在 outlook 中看起来仍然相同。
您需要使用 encodeURIComponent
两次,因为您是在另一个参数中对一个参数进行编码。
您的 link 正在使用 mailto
协议并使用 body
参数对哪些内容进行编码。但是,在该内容中,您正在输入一个带有参数的 URL,因此,该参数也应该被编码。
试试这个:
var data = {"Test": "Property with spaces"};
var mailTo = 'mailto:?body=' + encodeURIComponent('http://www.google.com/?body=' + encodeURIComponent(JSON.stringify(data)));
document.getElementById("link").href = mailTo;
<a id='link'>anchor</a>