1

我正在尝试在 javascript 中使用以下内容打开邮件回复窗口:

window.location='mailto:'+to+'?subject='+subject+'&cc='+cc+'&body='+body;  

问题是正文变量中有一些字符(如引号、特殊字符等)会给出错误消息。如果我给它一个静态的简单正文字符串,则相同的代码可以工作。

Firefox 错误类似于

错误:未捕获的异常:[异常...“失败”nsresult:“0x80004005(NS_ERROR_FAILURE)”位置:“JS frame :: (url) :: send_mail :: line 49”数据:no]”

正文内容:“XXXXX”

找出原因伙计们......它不允许我发送超过 1209 个字符。将此作为新问题发布。

4

2 回答 2

2

如果您将字符串传递给查询字符串中的参数,并且该字符串可能包含在 url 中具有其他含义的字符,则需要使用以下命令对它们进行转义:

escape(stringOfTextToEscape);

因此,您的 window.location 将如下所示:

window.location='mailto:'+to+'?subject='+subject+'&cc='+cc+'&body='+escape(body) 

这可确保任何特殊字符都转换为 unicode 转义序列,从而可以安全地传递到 URL。

有关更多信息,请参阅此关于转义、encodeURI 和 encodeURIComponent 的常见问题解答

于 2012-05-24T07:06:13.873 回答
1

尝试这个:

window.location='mailto:'+to+'?subject='+subject+'&cc='+cc+'&body='+escape(body); 

escape()函数对特殊字符进行编码,但以下情况除外: * @ - _ + 。/

所以escape("How are you? Come on!");会给你这样的结果:How%20are%20you%3F%20Come%20On%21

于 2012-05-24T07:06:35.730 回答