**编辑:谢谢,Shivan Raptor!我有点忘了“encodeURIcomponent()”! **
出于某种原因,我正在制作一个Javascript书签,可以快速通过电子邮件发送我的两封电子邮件之一。 (我只是展示缩进的JS以使其更容易,因为我可以转换它。)它使用几个变量作为主题和正文,它们是通过提示输入的。
var address = confirm("School email?");
var sub = prompt("What is the subject?");
var bod = prompt("What would you like the message to read?");
if(address == true) {
window.location.assign("mailto:areiter@hightechhigh.org?Subject=sub&body=bod");
alert("Message sent to 'areiter@hightechhigh.org'.");
}
else {
window.location.assign("mailto:burningphantom13@gmail.com?Subject=sub&body=bod");
alert("Message sent to 'areiter@hightechhigh.org'.");
}
唯一的问题是变量“sub”和“bod”分别是主语和正文所显示的内容。所以代码打开了Outlook,并且有一封电子邮件准备好与主体中的“sub”和“bod”一起发送。有没有办法让Javascript代码的主题和正文成为变量的值?请记住,它将是一个书签,因此不能有任何HTML。
答案 0 :(得分:3)
您可以替换:
window.location.assign("mailto:areiter@hightechhigh.org?Subject=sub&body=bod");
使用:
window.location.assign("mailto:areiter@hightechhigh.org?Subject=" + encodeURIComponent(sub) + "&body=" + encodeURIComponent(bod));
根据用户输入,变量sub
和bod
将是动态的。 encodeURIComponent
对参数进行编码,因此如果用户输入特殊字符,则代码不会崩溃。
答案 1 :(得分:-1)
将代码更改为以下内容,
var address = confirm("School email?");
var sub = prompt("What is the subject?");
var bod = prompt("What would you like the message to read?");
if(address == true) {
window.location.assign("mailto:areiter@hightechhigh.org?Subject=" + sub + "&body=" + bod);
alert("Message sent to 'areiter@hightechhigh.org'.");
}
else {
window.location.assign("mailto:burningphantom13@gmail.com?Subject=" + sub + "&body=" + bod);
alert("Message sent to 'areiter@hightechhigh.org'.");
}
希望这会奏效:)