HTML-строка должна быть создана JavaScript - PullRequest
1 голос
/ 17 января 2012

Мне нужно добавить следующий код через innerHTML в текстовое поле HTML.

<script type="text⁄javascript"><!--
my_client = "test/test2/456789";
my_num = "gjhklasd";
my_width = 728;
my_height = 90;
my_page_url = "${SOMEURL}";
//-->
</script>

Есть ли альтернатива экранированию приведенного выше кода для JavaScript, кроме как сделать его похожим на

&lt;script type=&quot;text&frasl;javascript&quot;&gt;&lt;&#33; и т. Д.

Я спрашиваю, потому что экранирование фрагмента с указанными выше сущностями приводит к вставке «скрипта-призрака», например. <!-- внезапно появляется в тех местах, где я его не положил.

Помимо этого, это может быть ошибка браузера, которую я обнаружил. Воспроизводится в Firefox 9 для Windows и Opera 11 для Linux.

Ответы [ 2 ]

1 голос
/ 17 января 2012

Вы можете попробовать использовать свойство innerText, которое должно обрабатывать экранирование автоматически. Вам просто нужно избегать наличия последовательности </script> в строковом литерале в блоке JavaScript. (Есть объяснение в одном из связанных вопросов .) Вы можете обойти это, например, разбив тег:

var t = '<script type="text/javascript"><!--\n\
    abc\n\
        --></script'+'>';
elmt.innerText = t; 

jsFiddle: http://jsfiddle.net/pB24u/2/

1 голос
/ 17 января 2012

В случае, если вы получаете HTML в качестве параметра или просто хотите, чтобы строка с этим сценарием выглядела лучше в вашем коде: я бы просто использовал какой-то кодер на нем. Здесь, кажется, один: http://www.strictly -software.com / scripts / downloads / encoder.js

...