Тег скрипта в строке JavaScript
Я сталкиваюсь с проблемой, когда в JavaScript есть заключительный тег сценария внутри строки в кавычках, и он уничтожает сценарий. Я предполагаю, что это не ожидаемое поведение. Пример этого можно увидеть здесь: http://jsbin.com/oqepe/edit
Мой тестовый браузер для заинтересованных: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.4) Gecko/20091028 Ubuntu/9.10 (karmic) Firefox/3.5.4.
2 ответа
Решение
Что просходит?
HTML-парсер браузера увидит </script>
внутри строки, и он будет интерпретировать его как конец элемента скрипта.
Посмотрите на раскраску синтаксиса в этом примере:
<script>
var test = 'foo... </script> bar.....';
</script>
Обратите внимание, что панель слов обрабатывается как текстовое содержимое вне элемента script...
Обычно используется метод конкатенации:
var test = '...... </scr'+'ipt>......';
Вам нужно избежать этого, иначе он будет частью HTML.
var test = 'what the hell... \<\/script\> \<h1\>why?!?!?!\<\/h1\>';