Почему эта линия закрытия Google выглядит так, как выглядит?

Почему эта строка javascript выглядит так? Я имею в виду, почему в конце лишний +?

'<script type="text/javascript" src="' + src + '"></' + 'script>'

Источник: http://code.google.com/p/closure-library/source/browse/trunk/closure/goog/base.js#511


person Marcin    schedule 17.01.2012    source источник


Ответы (1)


Потому что, если у вас есть "</script>" внутри тега <script>, браузер подумает, что вы закрыли тег скрипта. Это довольно распространенный способ включения текста </script> в строку с тегами <script>.

person James Montagne    schedule 17.01.2012
comment
Почему '‹script type=text/javascript src=' + src + '›‹/script›» не работает? - person Terry; 18.01.2012
comment
Обратите внимание, что этот маленький трюк не дает никакой пользы, если вы загружаете скрипт как внешний файл. Так что на всякий случай... - person user123444555621; 18.01.2012
comment
@Terry: Поскольку синтаксическому анализатору HTML необходимо найти содержимое файла <script>...</script>. Только после этого содержимое передается JS-движку для дальнейшей обработки. Парсер HTML не знает о синтаксисе JavaScript, поэтому он не знает, находится ли конечный тег внутри строкового литерала. - person user123444555621; 18.01.2012
comment
@Pumbaa80: Спасибо. Мне нужно немного подумать об этом, может быть, немного поиграть с этим. Сочетание html и Javascript действительно интересно. Во времена Фортрана все было намного проще, но, эй, вперед и вверх! - person Terry; 18.01.2012
comment
Другой способ, который вы видите, это ...<\/script>, так как JavaScript видит \/ как косую черту, а синтаксический анализатор HTML - нет. - person T.J. Crowder; 18.01.2012