#javascript #xhtml
#javascript #xhtml
Вопрос:
я использую blogger и хочу создать свой собственный шаблон с нуля, поэтому я начал понимать самую базовую структуру того, как обстоят дела. В моем путешествии по этому вопросу я столкнулся с проблемой CDATA, и я хотел протестировать этот код.
<html>
<head>
<b:skin>
<![CDATA[ ]]>
</b:skin>
</head>
<body>
<b:section id='post'/>
<script>
if(trueamp;amp;true)
alert("hello");
</script>
</body>
</html>
Это выдает мне ошибку, и я знаю, что вместо «amp;» должно быть «amp;», потому что это xhtml, поэтому я добавляю cdata, и мой код станет таким
<html>
<head>
<b:skin>
<![CDATA[ ]]>
</b:skin>
</head>
<body>
<b:section id='post'/>
<script>
<![CDATA[
if(trueamp;amp;true)
alert("hello");
]]>
</script>
</body>
</html>
Теперь, когда я тестирую его, предупреждающее сообщение не отображается, поэтому я помещаю // перед открывающим и закрывающим тегом CDATA, и это работает.
Я хочу понять, почему причина, по которой он работает с //, а не без.
Ответ №1:
Blogger анализирует шаблоны XML как XML, поэтому они должны быть действительными XML для работы с серверной частью Blogger.
Однако, когда Blogger отправляет результирующую страницу в браузер, он сообщает, что тип содержимого text/html; charset=UTF-8
(что неверно, потому что это XHTML (но см. Ниже)).
HTML и XHTML — это разные языки, поэтому, когда браузер анализирует XHTML как HTML, он не делает ничего особенного <![CDATA[
и просто передает его движку JavaScript.
<![CDATA[
недопустимый JavaScript, поэтому возникает исключение.
Добавляя к нему префикс //
, вы меняете недопустимый JavaScript на допустимый комментарий строки JavaScript.
кроме того: XHTML и HTML достаточно похожи, чтобы вам могло сойти с рук притворяться, что ваш XHTML является HTML, если вы будете следовать рекомендациям по совместимости.
Комментарии:
1. И причина, по которой, когда Blogger отправляет результирующую страницу в браузер, в нем говорится, что тип содержимого — text / html; charset= UTF-8, что неправильно?