私のサイトのすべてのページにmailto
ボタンがあり、そのページへの参照を電子メールの本文に書きたいのですが。
1ページで
<a class="email" title="Email a friend" href="mailto:?subject=Interesting%20information&body=I thought you might find this information interesting:%20%0d%0ahttp://www.a.com/Home/SiteMap/tabid/589/Default.aspx">Email</a>
しかし、どのようにすればこれをすべてのページに汎用的にできるでしょうか?
これは純粋なJavaScriptソリューションです。
<a class="email" title="Email a friend" href="#" onclick="javascript:window.location='mailto:?subject=Interesting information&body=I thought you might find this information interesting: ' + window.location;">Email</a>
Javascriptでは、UTF-8ページでencodeURIComponent()を使用して、件名と本文のhfvalueをutf-8-percent-encodeします。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<script>
function SendLinkByMail(href) {
var subject= "Interesting Information";
var body = "I thought you might find this information interesting:\r\n\r\n<";
body += window.location.href;
body += ">";
var uri = "mailto:?subject=";
uri += encodeURIComponent(subject);
uri += "&body=";
uri += encodeURIComponent(body);
window.open(uri);
}
</script>
</head>
<body>
<p><a href="javascript:(function()%7BSendLinkByMail()%3B%7D)()%3B">Email link to this page</a></p>
</body>
</html>
このサーバー側を実行している場合は、mailtoリンクを作成して、href属性値として出力するだけです。そうすれば、JSはまったく必要ありません。
ASPには、encodeURIComponent()のように機能するいくつかのURIエンコード関数があると思います。
別の例として、my mailto URI composer ページのソースを表示することもできます。
http://shadow2531.com/opera/testcases/mailto/mailto_uri_scheme_idea.html#send_link_by_mail とmy mailto URIもご覧ください。構文バリデータ 。
URIを入れる<と>については、上記のJSコードで、RFC3986の「付録C. URIをコンテキストで区切る」を参照してください。
また、window.location.hrefの代わりに、window.location、document.location.href、またはdocument.locationを使用できます。通常は「document.location」を使います。
Onclick属性の代わりにJavaScript URIを使用する理由については、 this answer を参照してください。
上記のコードのJS URIでは、コードを無名関数でラップしたことにも注意してください。この場合、関数をクリックしても、ドキュメントを変更するようなものは何も返されないため、これは必要ありません。しかし、それは常に適切に測定することです。
JavaScript URIの作成については、my Javascript URI compose を参照してください。
ドキュメントが読み込まれたときにすべてのメールリンクのすべてのhrefを変更できるJSをすべてのページに配置できます。
よりコンパクトなため、サンプルコードにはjQueryを使用しますが、これは純粋なJSでも実現できます。
$(document).ready(function(){
$(".email").attr("href", "mailto:?subject=Interesting%20information&body=I thought you might find this information interesting:%20%0d%0a"+window.location);
});
メール本文に文字列を含めるには、&body=
を使用する必要があります
ここに一般的なJavaScript関数があります
<script>
function emailFriend(){
var strrep ,ptitle = document.title;
strrep= ptitle.replace(/"/g,'%22');
strrep= ptitle.replace(/&/g,'%26');
var mailtourl = "mailto:?subject=Interesting%20information&body=I thought you might find this information interesting: "+encodeURIComponent(location.href);
location.href = mailtourl;
return false
}
</script>
<a href="javascript:;" onclick="emailFriend();return false">Email</a>