Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 逃逸;用于在邮件客户端中显示(mailto链接)_Javascript_Urlencode_Encode - Fatal编程技术网

Javascript 逃逸;用于在邮件客户端中显示(mailto链接)

Javascript 逃逸;用于在邮件客户端中显示(mailto链接),javascript,urlencode,encode,Javascript,Urlencode,Encode,我有一个JavaScript函数,如下所示: var strBody = encodeURI(window.location.href); var strSubject = encodeURI(document.title); var mailto_link = "mailto:?subject=" + encodeURI(strSubject) + "&body=" + strBody; 此代码在超链接的onclick事件上执行,并打开邮件客户端(mailto://)。但是,页面的标

我有一个JavaScript函数,如下所示:

var strBody = encodeURI(window.location.href);
var strSubject = encodeURI(document.title);
var mailto_link = "mailto:?subject=" + encodeURI(strSubject) + "&body=" + strBody;
此代码在超链接的onclick事件上执行,并打开邮件客户端(mailto://)。但是,页面的标题有多个&symbol,但是只有在第一个&symbol之前才会拾取标题。url总是被选中的

什么是正确的JavasSript来转义&并在邮件客户端的主题行中显示它

var encoded_body = encodeURIComponent(window.location.href);
var encoded_subject = encodeURIComponent(document.title);
var mailto_link = "mailto:?subject=" + encoded_subject + "&body=" + encoded_body;
应该这样做(
encodeURIComponent
而不是
encodeURI

在原始代码中,您也错误地对主题进行了双重编码(一次在第2行,然后再次在第3行)


我冒昧地重命名了您的变量,以便更清楚地表明它们包含编码的主题和正文,而不是原始文本。

您不希望使用encodeURI。

不要使用
escape
,因为它不能正常工作,所以不推荐使用。@Quentin很好地发现。我现在有点抓到你的答案了,对不起:)。那也没用?对于像a&b&c这样的标题,我只能得到“a”。@gss5:它适合我,我用Chrome和IE与Outlook一起进行了测试。也许您遇到了与特定邮件客户端不兼容的问题?@gss5:听起来您的邮件客户端行为异常。您测试了哪些邮件客户端?