Как объявить JavaScript и CSS XHTML-совместимым? - PullRequest
4 голосов
/ 21 мая 2010

Мне интересно, как объявить код JavaScript в разделе CDATA, чтобы он был совместим с XHTML. Какой метод является правильным / рекомендуемым?

Метод 1:

<script type="text/javascript">
// <![CDATA[
CODE
// ]]>
</script>

Метод 2:

<script type="text/javascript">
/* <![CDATA[ */
CODE
/* ]]> */
</script>

Второй также подходит для встроенного CSS?

И возможно ли / имеет смысл добавить здесь какое-нибудь объявление кодировки, например

<script type="text/javascript" charset="utf-8">
...
<style type="text/css" media="screen" charset="utf-8">
...

or

<script type="text/javascript">
@charset "utf-8";
...
<style type="text/css" media="screen">
@charset "utf-8";
...

Ответы [ 3 ]

6 голосов
/ 21 мая 2010

Какой метод является правильным / рекомендуемым?

Либо одинаково хороши.

Второй также подходит для встроенного CSS?

Да.

Однако вам нужно беспокоиться о размещении блоков скриптов и стилей в разделе <![CDATA[ только тогда, когда вы хотите включить символы < или & в блок. Вы почти никогда не будете использовать их в CSS.

Вы можете использовать их в JavaScript, но, как правило, лучше избегать этой проблемы, помещая любое значительное количество кода во внешние сценарии, к которым оно относится. Встроенные блоки скриптов, как правило, лучше подходят для ввода вызовов данных и вызовов скриптов, которые редко требуют использования < или & (за исключением строковых литеральных значений, в этом случае есть аргумент для их кодирования, например. \x3C вместо).

И возможно ли / имеет смысл добавить сюда какое-нибудь объявление кодировки

Нет. Атрибут charset="..." имеет какое-либо значение только для внешних файлов (и не существует в <style>, поскольку он никогда не является внешним файлом). Внутреннее содержимое уже было декодировано из байтов в символы одновременно с остальной частью содержащего документ, поэтому charset не имеет смысла в этом пункте.

В любом случае, не все браузеры обращают внимание на атрибут <script charset>, поэтому необходимо, чтобы кодировка сценариев соответствовала кодировке страницы, которая их включает. Что делает charset="..." довольно избыточным.

@charset "utf-8"; нормально во внешних таблицах стилей, но вам почти никогда не нужны символы не-ASCII в таблицах стилей, так что это необычно видеть. @charset недопустимо в JavaScript.

1 голос
/ 21 мая 2010

Это зависит от того, как вы обслуживаете ваш XHTML.

Если вы используете XHTML в качестве XHTML, используя следующий заголовок HTTP ...

Content-Type:application/xhtml+xml

... тогда все, что вам нужно, это раздел CDATA с закомментированным началом и концом; как ты.

Однако, если вы используете HTML ...

Content-Type:text/html

Все становится немного сложнее. Вам следует прочитать статью Отправка XHTML как текст / html Считается вредной , но также составить собственное мнение по этому вопросу; часто обсуждается вопрос о том, действительно ли использование XHTML как text/html действительно вредно; например, Эллиот Расти Гарольд (автор книги Рефакторинг HTML , который я настоятельно рекомендую) не согласен.

0 голосов
/ 21 мая 2010

Я привык этим пользоваться и никогда не получаю проблем:

<script type="text/javascript" charset="utf-8">
...
</script
<style type="text/css" media="screen" charset="utf-8">
...
</style>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...