Вопрос по html, javascript – Экранирование двойных кавычек в обработчике событий JavaScript onClick

57

Простой блок кода ниже может быть представлен на статической HTML-странице, но приводит к ошибке JavaScript. Как вы должны избегать встроенных двойных кавычек в обработчике onClick (т.е. \ & quot; 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>

Ваш Ответ

5   ответов
1

Ненавязчиво.

Что-то вроде этого

window.onload = function(){
    var myLink = document.getElementsById('myLinkId');
    myLink.onclick = function(){ 
        parse('#', false, '<a href="xyz');
        return false;
    }
}

//...


<a href="#" id="myLink">Test</a>
79

&quot; или\x22

вместо тог

\"

?

Я только что проверил это в FF3.6 и IE8 по похожему сценарию, и это не сработало. Однако, заменив "на" сделал. Я также проверил точный код, описанный выше, и он работал в обоих направлениях. Короче говоря, \ x22 не работает при всех сценариях, и вы должны попробовать "в этом случае. SpliFF
Ницца. & Quot; кажется, работает в атрибутах HTML-тегов в Webkit и Firefox и Opera. NoBugs
\ x22 единственный у меня работал Ruwantha
Для меня,&quot; нормально работал внутри события клика:<a href="javascript:;" onclick="$(&quot;[id$='_txtFieldToClear']&quot;).val(&quot;&quot;);">Clear</a> Matt
\ "работал на меня! Спасатель жизни. Ура Лэндон. Aimal Khan
6

еку, такую как jquery или dojo), вот что также работает:

<script type="text/javascript">
function parse(a, b, c) {
    alert(c);
  }

</script>

<a href="#x" onclick="parse('#', false, 'xyc&quot;foo');return false;">Test</a>

Причина, по которой это barfs, не в JavaScript, а в HTML-парсере. Он не имеет представления об экранированных кавычках, и он начинает искать конечную кавычку, находит ее и возвращает как функцию onclick. Это неверный javascript, поэтому об ошибке вы не узнаете, пока JavaScript не попытается выполнить функцию ..

Downvote. Вам НЕ нужны рамки для чего-то подобного! anonymous coward
+ 1 для & quot; ... Greg
5

(\\") чтобы убежать от спасательного персонажа.

Classic. Stackoverflow съел одну из ваших обратных косых черт и отобразил только другую. Я исправил это для тебя. Nosredna
Упс, спасибо. Интересно, случилось ли это с ОП. Mark A. Nicolosi
52

а не экранировано Javascript. Изменить\" в&quot;

Похожие вопросы