我想设置Cookie捕获页面访问,然后让用户选择单击按钮并通过电子邮件发送cookie的内容。到目前为止,我有这个:
$( document ).ready(function() {
$('#testButton').click(function(event){
event.preventDefault();
var oldPathName = $.cookie("currentPath");
var newPathName = window.location.pathname;
var pathCombined = oldPathName+ String.fromCharCode(13)+newPathName;
var date = new Date();
var minutes = 30;
date.setTime(date.getTime() + (minutes * 60 * 1000));
$.cookie("currentPath", pathCombined, { expires: date });
alert(pathCombined);
var email = 'me@somewhere.com';
var subject = 'History';
window.location = 'mailto:' + email + '?subject=' + subject + '&body=' + pathCombined;
});
});
到目前为止,这只是一个测试。单击#testButton
首先会弹出包含cookie内容的警报,然后打开包含邮件正文中cookie内容的电子邮件。
我遇到的唯一问题是在电子邮件中插入换行符/回车符。我已经弄清楚如何在警报的路径之间获得换行符,但它在电子邮件文本中不起作用。
例如,如果我按以下顺序访问两个页面:
www.example.com/xxx/yyy/zzz
www.example.com/xxx/yyy/qqq
然后上面代码触发的警报显示:
/xxx/yyy/zzz
/xxx/yyy/qqq
但电子邮件的正文写成:
/xxx/yyy/zzz/xxx/yyy/qqq
格式化电子邮件正文中的中断显然需要采用不同的方式。我尝试用String.fromCharCode(13)
替换%0D%0A
但它打破了JQuery。
答案 0 :(得分:0)
您只需要对文字进行编码。
var pathCombined = oldPathName+ '\n' +newPathName;
window.location = 'mailto:'
+ encodeURIComponent(email)
+ '?subject='
+ encodeURIComponent(subject)
+ '&body='
+ encodeURIComponent(pathCombined);