В <head>, что на первом месте: <meta>или <title>? - PullRequest
44 голосов
/ 07 апреля 2011

В голове, что на первом месте: мета или заголовок?

Я читал это:

Этот [мета] тег должен быть первым в разделе HEAD, потому чтоСервер обработает текст выше как ASCII без определенного формата, который известен только после анализа тега.

http://www.xul.fr/en/html5/html.php

Указывает ли стандарт порядок?

Есть ли недостатки в любом порядке?

Ответы [ 5 ]

43 голосов
/ 07 апреля 2011

Как все остальные ответы уже указали, это обычно не имеет значения.Вот немного больше о том, когда это важно и почему.

Прежде всего, поскольку вы спрашивали о стандартах, вам может быть интересно узнать, что цитируемый вами текст взят из рекомендаций W3C для HTML 4:

http://www.w3.org/TR/html4/charset.html#h-5.2.2

Существует аналогичное обсуждение в проекте стандарта HTML 5:

http://dev.w3.org/html5/markup/syntax.html#encoding-declaration

Основная проблема заключается в том, что браузер должен использоватьнекоторая кодировка набора символов для начала обработки документа, получаемого с сервера.Итак, что произойдет, если начинается с одного набора символов, а затем тег <meta> говорит ему использовать что-то еще?Ответ таков:

Сервер должен указывать набор символов в поле Content-Type заголовка ответа HTTP.Если это так, браузер должен использовать этот набор символов и игнорировать любой набор символов, который может быть указан в теге <meta> в обслуживаемом документе.

К сожалению, многие серверы не предоставляют эту информацию,В этом случае браузер должен предположить что-то, чтобы начать.Что-то должно быть «ASCII-совместимым», что означает, что оно согласуется с ASCII для любых символов в диапазоне ASCII.Если в документе указан набор символов в теге <meta>, браузер начнет использовать этот набор символов.Итак, если ваш заголовок был до этого, он уже был интерпретирован как ASCII, что может быть неправильно, в зависимости от того, что было в заголовке.

Подводя итог: если сервер не указывает кодировку, изаголовок закодирован в чем-то отличном от ASCII, тогда вам нужно поставить тег <meta>, который вначале указывает charset.В противном случае это не имеет значения.Поэтому, чтобы быть в безопасности, имеет смысл сначала поставить тег <meta> для набора символов.

11 голосов
/ 07 апреля 2011

Порядок тегов практически не имеет значения.

Эта цитата говорит о <meta http-equiv="content-type">.
Если вы используете этот тег, он должен стоять первым, чтобы браузер знал, какую кодировку использовать для анализа остальной части документа.

Пока у вас нет символов, не относящихся к ASCII, его местоположение не имеет значения.

7 голосов
/ 07 апреля 2011

Это не имеет значения, если вы не имеете дело с IE и не хотите использовать X-UA-COMPATIBLE

<meta http-equiv="X-UA-Compatible" content="IE=7" />

Это должно быть первым в голове, если оно должно быть оценено IE ...( в противном случае он игнорирует )

1 голос
/ 11 января 2016

@ Габи ака Г. Петриоли -

Я тоже долгое время думал, что метатег "X-UA-Compatible" должен стоять первым или он игнорируется IE. Следует отметить, что тег <title> может стоять на первом месте. Кроме того, до метатега, совместимого с IE, не может быть других типов тегов (<link> or <script>).

См. https://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx и примечание:

Заголовок X-UA-Compatible не чувствителен к регистру; однако, это должно появляются в заголовке веб-страницы (раздел HEAD) до того, как все другие элементы, кроме элемента title и других метаэлементов .

Итак, чтобы продолжить тему с вопросом ОП; опять же, не имеет значения, является ли метатег первым или тег заголовка первым. Единственным реальным предостережением является метатег набора символов (как отмечено в Джоэл Ли ответ выше ).

Я бы добавил, что хорошей практикой является размещение метатега «Набор символов» сначала внутри <head>, за которым сразу следует метатег IE Compatible, а затем <title>. Как это:

<head>
  <meta charset="UTF-8">
  <meta http-equiv="x-ua-compatible" content="IE=edge">
  <title>Cool Page</title>

Любые дополнительные теги, которые существуют в <head>, могут следовать за <title>.

1 голос
/ 07 апреля 2011

В большинстве случаев это не имеет значения вообще. Обычно я ставлю <title> на первое место, но это полностью зависит от ваших предпочтений.

...