Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как заэкранировать тэг </script> в строке (https://javascript.ru/forum/misc/39423-kak-zaehkranirovat-tehg-script-v-stroke.html)

Russel 29.06.2013 14:29

Как заэкранировать тэг </script> в строке
 
Фрагмент кода страницы (это тривиальный пример, разумеется):
<script>
var str="<script>var n=1;</script>";
</script>

В результате js закрывается преждевременно, хотя первый </script> находится внутри строки.

Можно ли каким-то образом заэкранировать закрывающий тэг внутри строки?

ruslan_mart 29.06.2013 14:39

var str = '<script>var n=1;<\/script>';

dmitriymar 29.06.2013 15:18

"разрывать" и первый и второй
var str="<sc" + "ript>var n=1;" + "</s" + "cript>";

mta88 29.06.2013 15:32

подгрузить скрипт из файла:)

Russel 29.06.2013 16:02

Цитата:

Сообщение от Ruslan_xDD (Сообщение 259159)
<\/script>

Блин, ведь был у меня такой вариант, да по ошибке не тот слэш вставил :D

Спасибо, вопрос отпал)

danik.js 29.06.2013 16:07

Гы)
var serializer = new XMLSerializer();
var script = document.createElement('script');
script.textContent = 'var n = 1';
var str = serializer.serializeToString(script);
alert(str);

monolithed 29.06.2013 16:32

Цитата:

Сообщение от Ruslan_xDD
var str = '<script>var n=1;<\/script>';

Экранирование не нуждающихся в этом символов deprecated
Цитата:

Сообщение от dmitriymar
var str="<sc" + "ript>var n=1;" + "</s" + "cript>";

Можно еще по букве разбить )

Если используете JS на сервере, то просто прогоните строку через следующую функцию:

var escape_slash = function(value) {
   return value.replace(/<|>/g, function(chars, value) {
      return chars[value];
   }
   .bind(null, {
        '<' : '\x3C',
        '>' : '\x3E'
   }));
};

alert(escape_slash('</script>'));


В разметке это будет так:

alert('\x3C/script\x3E')


Часовой пояс GMT +3, время: 11:08.