Яваскрипт выходящий на амперсанд "&" - PullRequest
1 голос
/ 27 января 2011

Я пытаюсь использовать этот JS, чтобы открыть новое электронное письмо на клиентском компьютере с заголовком страницы, уже заполненным в строке темы и теле сообщения, по этой ссылке <a href="javascript:mailpage()">Email</a>

function mailpage()
{ mail_str = "mailto:?subject= " + document.title; mail_str += 
"&body=Hi, I thought you might be interested in this: " 
+ document.title; mail_str += 
". You can check out the web site at "
+ location.href; location.href = mail_str;
}

Но некоторые из моих страниц имеют амперсанд & как часть заголовка страницы, и функция блокирует его и вставляет только текст перед &, а не & или что-либо после. (Да, «удушье» - это высокотехнологичный термин.)

Есть ли способ избежать & JS не задохнется? & Фактически отображается как &#064; в источнике страницы. Или мне нужно перейти к функции PHP? Спасибо.

Редактировать: это работает: + encodeURIComponent(document.title); mail_str +=

Ответы [ 3 ]

5 голосов
/ 27 января 2011
encodeURIComponent(document.title)
2 голосов
/ 27 января 2011

Вы должны вызывать encodeURI или encodeURIComponent для тех переменных, которые вы вставляете в место назначения.Это устранит грязные символы и позволит ему пройти.

function mailpage()
{
    var subject = encodeURIComponent(document.title),
        body= encodeURIComponent("Hi, I thought you might be interested in this: "
            + document.title + ". You can check out the web site at "
            + location.href;

    location.href = "mailto:?subject= " +subject + "&body=" + body;
}
0 голосов
/ 27 января 2011
function mailpage()
{ mail_str = "mailto:?subject= " + document.title; mail_str += 
  "\&body=Hi, I thought you might be interested in this: " 
  + document.title; mail_str += 
  ". You can check out the web site at "
  + location.href; location.href = mail_str;
}

Используйте \ в качестве escape-символа в JavaScript

...