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 を、デフォルトの var total ではなく、mailto-link 内に表示するにはどうすればよいですか。

免責事項: 私はあまり頭がよくありません (少なくともコーディングに関しては)。

おまけ情報: FB.init などを使用して var total を Facebook と共有できるようにしました。これにより、操作された 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 は、ページの生成時に 1 回だけ実行されます。何かが変更されるたびにトリガーされる動的なコードではありません。これには別のアプローチが必要です。

document.write の代わりに、javascript を href として通常の html リンク (a 要素) を作成し、ドキュメントの URL を mailto リンクに変更します。

例えば:

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

これは、リンクがクリックされると、URL に移動する代わりに、ドキュメントの場所を mailto-link に変更する JavaScript の一部を実行し、THEN のみが total 変数の値を本文に埋め込むことを意味します。

さらに良い方法は、そのリンクがクリックされたときにトリガーする外部関数を作成することです。

<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 に答える