В <head>, который на первом месте: <meta> или <title>?
В голове, которая на первом месте: мета или название?
Я читал это:
Этот тег [meta] должен быть первым в HEAD, потому что сервер будет обрабатывать текст выше как ASCII с нет конкретного формата, который он только знал после анализа тега.
http://www.xul.fr/en/html5/html.php
Указывает ли стандарт порядок?
Есть ли недостатки в любом порядке?
Ответы
Ответ 1
Как уже указывали другие ответы, это обычно не имеет значения. Здесь немного больше о том, когда это важно и почему.
Прежде всего, поскольку вы спрашивали о стандартах, вам может быть интересно узнать, что текст, который вы цитируете, исходит из рекомендаций 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>
для набора символов в первую очередь.
Ответ 2
Порядок тегов почти не имеет значения.
Эта цитата говорит о <meta http-equiv="content-type">
.
Если вы используете этот тег, он должен быть первым, чтобы браузер знал, какую кодировку использовать для анализа остальной части документа.
Пока у вас нет каких-либо символов, отличных от ASCII, его местоположение не имеет значения.
Ответ 3
Не имеет значения, если вы не имеете дело с IE и хотите использовать X-UA-COMPATIBLE
<meta http-equiv="X-UA-Compatible" content="IE=7" />
Это должно быть первое в голове, если оно должно быть оценено IE... (в противном случае оно игнорирует его)
Ответ 4
В большинстве случаев это вообще не имеет значения. Обычно я помещаю <title>
во-первых, но это полностью зависит от ваших предпочтений.
Ответ 5
@Габи ака Г. Петриоли -
В течение долгого времени я тоже думал, что метатег "X-UA-Compatible" должен быть первым, или IE игнорируется. Следует отметить, что тег <title>
может быть первым.
Кроме того, перед метатегом, совместимым с IE, не может быть других типов тегов (<link> or <script>
).
Смотрите https://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx и обратите внимание:
Заголовок, совместимый с X-UA, не чувствителен к регистру; однако он должен появляться в заголовке веб-страницы (раздел HEAD) перед всеми другие элементы, за исключением элемента title и других мета элементов.
Итак, продолжать тему с вопросом OP; опять же, не имеет значения, является ли метатег первым, или первым тегом заголовка. Единственное реальное предупреждение - метатег набора символов (как указано в Joel Lee ответить выше).
Я бы добавил, что последовательной практикой является размещение метатега набора символов сначала внутри <head>
, за которым следует сразу метатег IE Compatible, а затем <title>
. Вот так:
<head>
<meta charset="UTF-8">
<meta http-equiv="x-ua-compatible" content="IE=edge">
<title>Cool Page</title>
Любые дополнительные теги, которые живут в <head>
, могут следовать за <title>
.