Что именно мне нужно скрывать внутри элемента `script`?

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

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

Ответ 1

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

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

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

Ответ 2

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

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.

Ответ 3

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

<script>
// <![CDATA[
 script here
// ]]>
</script>