Escape-кавычки в JavaScript - PullRequest
       86

Escape-кавычки в JavaScript

198 голосов
/ 05 января 2010

Я вывожу значения из базы данных (она на самом деле не открыта для публичного ввода, но она открыта для ввода пользователем в компании - значит, меня не волнует XSS .)

Я пытаюсь вывести тег, подобный этому:

<a href="" onclick="DoEdit('DESCRIPTION');">Click Me</a>

ОПИСАНИЕ - это значение из базы данных, которое выглядит примерно так:

Prelim Assess "Mini" Report

Я пытался заменить «на \», но независимо от того, что я пытаюсь, Firefox продолжает обрезать мой JavaScript-вызов после пробела после слова Assess , и это вызывает все виды проблем.

Я, должно быть, отказываюсь от очевидного ответа, но я не могу понять его жизнь.

Кто-нибудь хочет указать на мой идиотизм?

Вот вся HTML-страница (в конечном итоге это будет ASP.NET страница, но для решения этой проблемы я удалил все остальное, кроме кода проблемы)

<html>
    <body>
        <a href="#" onclick="DoEdit('Preliminary Assessment \"Mini\"'); return false;">edit</a>
    </body>
</html>

Ответы [ 13 ]

0 голосов
/ 04 апреля 2019

Вы можете использовать методы jquery escape () и unescape (). Как ниже,

побег пользователя (str); чтобы выйти из строки и восстановиться снова, используя unescape (str_esc);

0 голосов
/ 22 марта 2017

Вам нужно избегать кавычек с двойной обратной косой чертой.

Сбой (создается PHP json_encode ):

<script>
  var jsonString = '[{"key":"my \"value\" "}]';
  var parsedJson = JSON.parse(jsonString);
</script>

Это работает:

<script>
  var jsonString = '[{"key":"my \\"value\\" "}]';
  var parsedJson = JSON.parse(jsonString);
</script>
0 голосов
/ 05 января 2010

Избегайте пробелов. Мне кажется, что Firefox предполагает три аргумента вместо одного. &nbsp; - символ неразрывного пробела. Даже если это не вся проблема, это может быть хорошей идеей.

...