1

遇到一个问题 - 我想在邮件正文中包含一个 js 变量,用户可以使用以下内容转发给朋友:

<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 成为可能,它完美地显示了被操纵的 var。

编辑:

JS(有点短):

var total = 'empty';

function getCalculation() {
total = (parseInt(f1) + parseInt(f2)).toFixed(0);
document.contactForm.formTotal.value = total;
}
4

1 回答 1

3

document.write 只在页面生成时运行一次。它不是每次发生变化时都会触发的动态代码。为此,您需要一种不同的方法。

而不是 document.write,只需使用 javascript 作为 href 将文档 url 更改为 mailto 链接的普通 html 链接(a 元素)。

例如:

<a href="javascript:location.href='mailto:my@email.com?subject=Subject&body=Bodytext' + total">Mail Me</a>

这意味着当点击链接时,我们执行一段 JavaScript 将文档的位置更改为 mailto-link,而不是转到 URL,并且只有 THEN 将 total -variable 的值嵌入到正文中。

更好的方法是创建一个在单击该链接时触发的外部函数:

<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 确保主题和正文被正确编码,以便所有特殊字符和空格等在邮件客户端中得到正确翻译。

我希望这会有所帮助!

于 2013-05-21T09:27:18.227 回答