遇到问题 - 我希望在邮件正文中包含一个js-variable,用户可以使用以下内容转发给朋友:
<head>
<script src="javascript.js" type="text/javascript">
</script>
<body>
<script type="text/javascript">
document.write('<a href="mailto:?subject=Subject&body=Bodytext' +total+ '">Mail me</a>');</script>
</body>
var total在.js文件中定义,它的值可以通过执行附加到表单的af函数来操作。
即使执行了该功能并且页面显示了更改,打开的邮件也将始终显示默认值var total而不是被操纵。
基本上我的问题是:如何让修改后的var total显示在mailto-link中,而不是默认的var total。
免责声明:我不是很聪明(至少在编码方面)。
奖金 - 信息:我已经可以使用FB.init等与Facebook分享var total,这完美地展示了操纵变量。
修改
JS(缩短了一点):var total = 'empty';
function getCalculation() {
total = (parseInt(f1) + parseInt(f2)).toFixed(0);
document.contactForm.formTotal.value = total;
}
答案 0 :(得分:3)
document.write仅在生成页面时运行一次。每次发生变化时都不会触发动态代码。你需要一种不同的方法。
而不是document.write,只需使用javascript作为href创建一个普通的html链接(a-element),将文档URL更改为mailto链接。
例如:
<a href="javascript:location.href='mailto:my@email.com?subject=Subject&body=Bodytext' + total">Mail Me</a>
这意味着当点击链接时,我们执行一段JavaScript,而不是转到URL,而是将一个JavaScript文件的位置更改为mailto-link,只有THEN将total -variable的值嵌入到body中
更好的方法是创建一个在单击该链接时触发的外部函数:
<script type="text/javascript">
function sendMail() {
var email = 'my@email.com';
var subject = 'My subject';
var body = 'This is the total: ' + total;
location.href = 'mailto:' + email
+ '?subject=' + encodeURIComponent(subject)
+ '&body=' + encodeURIComponent(body);
}
</script>
然后在链接中添加以下href:
<a href="javascript:sendMail()">Mail Me</a>
现在每次点击链接时,total
变量都会嵌入到电子邮件正文中,而不是在页面加载时。
encodeURIComponent确保正确编码主题和正文,以便在邮件客户端中正确翻译所有特殊字符和空格等。
我希望有所帮助!