Исправить предупреждение, выданное HTML Validator - PullRequest
4 голосов
/ 18 ноября 2009

У меня есть код JavaScript на моем сайте php.
Этот код использует jQuery и создает меню

Вот код

sel.append('<option value="' + data[i].id + '">' + data[i].nombre + '</option>');

И это дает мне следующее предупреждение

строка 240, столбец 82 - Предупреждение: буква '<' + '/' + здесь не допускается </em>

Кто-нибудь знает, как я могу исправить это предупреждение, так что мой HTML проверяет? Спасибо

Ответы [ 5 ]

10 голосов
/ 18 ноября 2009

Проблема в том, что любая последовательность </, известная как ETAGO, завершает элемент CDATA, такой как <script>. Вы можете получить с помощью </ в браузерах, но не </script.

Самый простой обходной путь - разбить последовательность </ с помощью обратной косой черты:

sel.append('<option value="' + data[i].id + '">' + data[i].nombre + '<\/option>');

Однако в этой строке все еще есть проблемы, потому что вы не экранируете HTML от значений id и nombre. Если они могут содержать <, & или ", вы только что создали себе уязвимость XSS на стороне клиента!

Так что либо HTML-экранирование ваших текстовых значений перед помещением их в строки, либо, возможно, проще, просто используйте стандартный DOM:

sel.append (новая опция (data [i] .nombre, data [i] .id));

4 голосов
/ 18 ноября 2009

Поместите JavaScript во внешний файл.

1 голос
/ 18 ноября 2009

Чтобы включить код, который не закодирован как XML, в документ XHTML (и я предполагаю, что это то, что вы пытаетесь сделать), вам нужно сделать что-то вроде следующего:

<script type="text/javascript">
//<![CDATA[

alert("<This is now valid XHTML>");

//]]>
</script>
1 голос
/ 18 ноября 2009

Если вы пишете JavaScript на странице HTML / XHTML, вы можете заключить JavaScript в CDATA

<script type="text/javascript">
/* <![CDATA[ */
console.log("..js code here..");
/* ]]> */
</script> 
0 голосов
/ 18 ноября 2009

Положите <!-- и --> вокруг вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...