Почему разделенный <сценарий> тег при записи этого с document.write ()?

263
задан Gumbo 9 August 2010 в 02:22
поделиться

2 ответа

</script> должен быть разбит, потому что иначе это закончило бы включение <script></script> блок слишком рано. Действительно это должно быть разделено между < и эти /, потому что блок сценария, как предполагается, (согласно SGML) завершен любым конечным тэгом, открывают (ETAGO) последовательность (т.е. </) :

, Хотя СТИЛЬ и элементы СЦЕНАРИЯ используют CDATA для их модели данных для этих элементов, CDATA должен быть обработан по-другому агентами пользователя. Разметку и объекты нужно рассматривать как необработанный текст и передать приложению, как. Первое вхождение последовательности символов" </" (конечный тэг открытый разделитель) рассматривают как завершение конца содержания элемента. В действительных документах это было бы конечным тэгом для элемента.

Однако в браузерах практики только заканчивают парсинг блока сценария CDATA на фактическом </script> тег завершения.

В XHTML нет такой специальной обработки для блоков сценария, таким образом, любой < (или &) символ в них должен быть &escaped; как в любом другом элементе. Однако тогда браузеры, которые анализируют XHTML как олдскульный HTML, запутаются. Существуют обходные решения, включающие блоки CDATA, но является самым легким просто избегать использования этих незавершенных символов. Лучший способ записать элемент сценария из сценария, который работает над любым типом синтаксического анализатора, был бы:

<script type="text/javascript">
    document.write('\x3Cscript type="text/javascript" src="foo.js">\x3C/script>');
</script>
366
ответ дан Gumbo 23 November 2019 в 02:33
поделиться

Я думаю, для, препятствуют тому, чтобы синтаксический анализатор HTML браузера интерпретировал < script> и главным образом </script> как закрывающий тэг фактического сценария, однако я не думаю, что использование document.write является превосходной идеей для оценки блоков сценария, почему не используют DOM...

var newScript = document.createElement("script");
...
20
ответ дан CMS 23 November 2019 в 02:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: