У меня есть приложение на C # ASP.NET, которое создает массив значений JavaScript для некоторой информации профиля пользователя.На стороне клиента я использую jQuery / JavaScript для чтения массива и создания ссылки mailto.Некоторые поля могут содержать специальные символы, например ' & = / \ "
.
Вот код C #:
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?