Ответ 1
Вы пробовали
"
или \x22
вместо
\"
?
Простой блок кода ниже может быть подан на статической странице HTML, но приводит к ошибке JavaScript. Как вы должны избегать встроенной двойной кавычки в обработчике onClick (например, xyz)? Обратите внимание, что HTML генерируется динамически, вытаскивая данные из базы данных, данные которой являются фрагментами другого HTML-кода, которые могут иметь один или два цитаты. Кажется, что добавление одного обратного сланца перед символом двойной кавычки не делает трюк.
<script type="text/javascript">
function parse(a, b, c) {
alert(c);
}
</script>
<a href="#x" onclick="parse('#', false, '<a href=\"xyz'); return false">Test</a>
Вы пробовали
"
или \x22
вместо
\"
?
Он должен быть с экранированным HTML, а не с Javascript-экранированным. Измените \"
на "
Хотя я согласен с CMS в том, что вы делаете это ненавязчиво (через lib, например jquery или dojo), вот что работает:
<script type="text/javascript">
function parse(a, b, c) {
alert(c);
}
</script>
<a href="#x" onclick="parse('#', false, 'xyc"foo');return false;">Test</a>
Причина, по которой это barfs, происходит не из-за JavaScript, а из-за парсера HTML. У него нет понятия об экранированных кавычках, которые он катится по поиску конечной цитаты и находит его и возвращает это как функцию onclick. Это недопустимый javascript, хотя вы не можете найти об ошибке, пока JavaScript не попытается выполнить эту функцию.
Вы также можете попробовать две обратные косые черты (\\")
, чтобы избежать escape-символа.
Я думаю, что лучший подход - ненавязчиво присвоить обработчик onclick .
Что-то вроде этого:
window.onload = function(){
var myLink = document.getElementsById('myLinkId');
myLink.onclick = function(){
parse('#', false, '<a href="xyz');
return false;
}
}
//...
<a href="#" id="myLink">Test</a>