Что именно мне нужно скрыть внутри элемента `script`? - PullRequest
12 голосов
/ 02 августа 2011

Какие части кода JavaScript мне нужно экранировать внутри элемента script на странице HTML? <>& достаточно или слишком много?

[EDIT] Это связано с этой ошибкой: http://code.google.com/p/rendersnake/issues/detail?id=15#c6 комментарий # 6

Ответы [ 3 ]

14 голосов
/ 02 августа 2011

В HTML (и XHTML, если вы злой человек , который отправляет ваши страницы XHTML как text/html), теги script являются #CDATA, и, следовательно, единственное, что вам следуетв контенте нет </script>, так как это все, что анализатор ищет для оповещения об окончании тега.Ничего не избегай;просто убедитесь, что у вас нет </script> в содержимом тега.Например, если у вас есть строка с закрывающим тегом сценария, разделите ее на части:

var a = '</scr' + 'ipt>';

В XHTML, отправленные как теги application/xhtml+xml, script имеют значение #PCDATA и, следовательно, экранируются1014 * и & необходимы, если только вы не можете использовать блок <![CDATA[ ... ]]> для перехода в режим разбора #CDATA, но в этом случае помните, что в вашем теге не может быть ]]>.

0 голосов
/ 02 августа 2011

Escaped <,> и & не работает во многих браузерах.Хорошо, если вы поместите все в раздел CDATA.Обратите внимание, что сам раздел CDATA должен быть в комментарии JavaScript, чтобы он работал со всеми браузерами.

<script>
// <![CDATA[
 script here
// ]]>
</script>
0 голосов
/ 02 августа 2011

В общем, единственное, что я избегаю, это / в закрывающих тегах. Таким образом:

var msg = "<p>Do you <em>really<\/em> think so, Miss Worthington?<\/p>";

В остальном, я полагаюсь на комментирование всего этого:

<script>
<!--
var msg = "<p>Do you <em>really<\/em> think so, Miss Worthington?<\/p>";
-->
</script>

Комментарий заботится о открывающих тегах HTML.

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