Javascript выходящий на амперсанд "&"
Я пытаюсь использовать этот 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, чтобы не задохнуться? & Фактически выглядит как @
на странице источника. Или мне нужно перейти к функции PHP? Благодарю.
Редактировать: это работает: + encodeURIComponent(document.title); mail_str +=
3 ответа
Вы должны вызывать 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;
}
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