Екраниране и за показване в пощенски клиент (връзка mailto)

Имам функция на JavaScript така:

var strBody = encodeURI(window.location.href);
var strSubject = encodeURI(document.title);
var mailto_link = "mailto:?subject=" + encodeURI(strSubject) + "&body=" + strBody;

Този код се изпълнява при събитие onclick на хипервръзка и отваря пощенския клиент (mailto://). Заглавието на страницата обаче има няколко символа &, но заглавието се избира само до първия &. URL адресът винаги се прихваща.

Кой е правилният JavasSript за избягване на & и показването му в реда за тема на пощенския клиент?


person gss5    schedule 01.07.2011    source източник


Отговори (2)


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).

Позволих си да преименувам вашите променливи, за да стане по-ясно, че те съдържат кодираните subject и body, за разлика от оригиналния текст.

person Daniel Cassidy    schedule 01.07.2011
comment
Не използвайте escape, той е отхвърлен, защото не работи правилно. - person Quentin; 01.07.2011
comment
@Quentin Добре забелязан. Някак си прекъснах отговора ви, съжалявам :). - person Daniel Cassidy; 01.07.2011
comment
И това не проработи? За заглавие като a & b & c мога да получа само a. - person gss5; 01.07.2011
comment
@gss5: При мен работи, тествах в Chrome и IE във връзка с Outlook. Може би се натъквате на несъвместимост с конкретен имейл клиент? - person Daniel Cassidy; 01.07.2011
comment
@gss5: Изглежда, че вашият имейл клиент се държи странно. Кои пощенски клиенти сте тествали? - person Flimzy; 01.07.2011

Искате encodeURIComponent да не encodeURI.

person Quentin    schedule 01.07.2011