向mailto主体传递特殊字符会导致JavaScript崩溃
Passing special characters to mailto body blows up JavaScript
我有一个c# ASP。NET应用程序,它为一些用户配置信息创建一个JavaScript值数组。在客户端,我使用jQuery/JavaScript读取数组并生成一个mailto链接。有些字段可以包含特殊字符,如' & = / ' "
。
private String generateElementsArray(){
StringBuilder sb = new StringBuilder();
sb.Append("var currentElements = { currentUserName: '");
sb.Append(currentUserName);
sb.Append("', currentUserEmail: '");
sb.Append(currentUserEmail);
sb.Append("', currentSite: '");
sb.Append(currentSite);
sb.Append("', currentTitle: '");
sb.Append(currentTitle);
sb.Append("'}");
return sb.ToString();
}
我将上面方法的值写入页面,生成以下JavaScript:
<script type="text/javascript">var currentElements = { currentUserName: 'Alex', currentUserEmail: 'myemailID', currentSite: 'Helpdesk', currentTitle: 'Phone User Guides & Troubleshooting'}</script>
然后我使用以下JavaScript代码生成电子邮件链接,将锚标记附加到页面上的一个元素:
function generateEmailTo(){
var body = currentElements.currentUserName + ' has shared a page with you on the intranet.%0A%0APage Title: %22' +
currentElements.currentTitle.replace("&","and") + '%22%0A' + $(location).attr('href').replace('#','');
var subject = currentElements.currentUserName + ' has shared a page with you on the intranet';
var mailto = 'mailto: ?body=' + body + '&subject=' + subject;
var anchor = '<a href="' + mailto + '"></a>';
$("#email-placeholder").wrap(anchor);
}
....
<img id="email-placeholder" title="Send this page to a friend." src="<%= baseUrl %>/SiteAssets/media/icons/email-icon.gif"/>
对于mailto正文文本,我注意到它只需要一小部分编码字符,例如%22
用于双引号,%0A
用于换行符。如何将特殊字符(如单引号、与号等)传递给mailto正文文本,并使JavaScript满意?
Mailto是一个URI方案,所以它的所有组件都必须是URI编码的。您可以使用JavaScript encodeuriccomponent函数对邮件组件进行编码。请看下面的例子:
function buildMailTo(address, subject, body) {
var strMail = 'mailto:' + encodeURIComponent(address)
+ '?subject=' + encodeURIComponent(subject)
+ '&body=' + encodeURIComponent(body);
return strMail;
}
var strTest = buildMailTo('abc@xyz.com', 'Foo&foo', 'Bar'nBar');
/* strTest should be "mailto:abc%40xyz.com?subject=Foo%26foo&body=Bar%0ABar" */
window.open(strTest);
相关文章:
- Javascript-食物总数数组崩溃
- javascript audio currentTime使一些浏览器崩溃
- Javascript播放音频后其他没有音频崩溃
- Javascript筛选器数组抛出错误并崩溃
- 试图修复一个倒计时计时器问题,该问题导致计时器运行,然后在使用Javascript时崩溃约10秒
- 浏览器11上的Javascript location.href崩溃
- JavaScript崩溃iPad浏览器
- JavascriptInterface函数使网页上的javascript崩溃
- 客户端Javascript崩溃的服务器端日志
- Javascript崩溃HTML -我的代码不工作,你能看到任何错误吗?
- 运行快速排序时Javascript崩溃
- 当我用Ajax更新html时,Javascript崩溃了
- 向mailto主体传递特殊字符会导致JavaScript崩溃
- Javascript崩溃延迟功能
- Javascript崩溃不工作
- 为什么这一行会导致Javascript崩溃?
- asp.net mvc - 由于 JSON 字符串中的 HTML 实体而导致 JavaScript 崩溃
- 如何在javascript中查找失败或导致javascript崩溃/无法继续执行的行
- Internet Explorer 8 - IE8 和 IE9 上的 JavaScript 崩溃-兼容模式:SCRIPT
- getBoundingClientRect()会导致javascript崩溃