onmouseover="showDescription('Text', 'Text with HTML tags in them<br />More text');"
Как и для всех значений атрибутов, вы должны кодировать HTML &
, <
и разделитель атрибутов ("
здесь). Тот факт, что внутри значения атрибута находится JavaScript, не имеет значения; значение атрибута HTML декодируется до того, как его увидит JavaScript.
onmouseover="showDescription('Text', 'Text with HTML tags in them<br />More text');"
Это в отличие от элемента <script>
, содержимое которого CDATA
и, следовательно, не &
-экранируется в HTML4. В XHTML нет элементов CDATA; Вы можете добавить секцию <![CDATA[
, чтобы заставить XHTML вести себя одинаково, но как элементам скрипта, так и атрибутам обработчика событий обычно проще избежать проблемы, никогда не используя символ &
или <
. В строковом литерале доступен другой escape, который вы можете использовать, чтобы обойти это:
onmouseover="showDescription('Text', 'Text with HTML tags in them\x3Cbr />More text');"