Плохое значение X-UA-совместимо для атрибута http-equiv на элементе meta
Я использовал тот же meta
, который использует Boilerplate HTML5, и валидатор HTML W3C жалуется:
Плохое значение X-UA-совместимо для атрибута http-equiv на метателе.
<meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
Что не так с этим тегом meta
?
Ответы
Ответ 1
Либо X-UA-Compatible не является "стандартным" HTML (FSVO "стандарт", который включает в себя появление на общедоступной странице вики-страницы, на которую ссылается спецификация) или Валидатор не обновляется с текущим статусом этой вики.
На момент написания статьи (20130326) на странице wiki в разделе "Вики" появляется X-UA-Compatible, в котором говорится: "Следующие предложенные расширения еще не соответствуют всем требованиям регистрации в спецификации HTML и, следовательно, еще не созданы разрешено в действительных документах". Поэтому валидатор правильно отклоняет это значение.
Ответ 2
Если вы хотите сделать его технически обоснованным (все любят видеть зеленый значок) без каких-либо функций, вы сможете просто обернуть его в тег "if IE".
<!--[if IE]><meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'><![endif]-->
Ответ 3
Одним из возможных решений является реализация серверной части исправления в заголовке, как предложено в этой хорошей записи Аароном Лейтоном. (Весь кредит должен идти к нему, и я перефразирую, а не плагиату...)
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
"Когда Internet Explorer попадает в эту строку, он изменит движок, который используется для первого Chrome Frame, если плагин установлен, а затем в Edge (самый высокий поддерживаемый режим документа в браузере).
Действия
- Исправить проверку страницы - это достигается простым удалением тега
- Скорость рендеринга - вместо того, чтобы ждать, пока браузер увидит тег, а затем изменит режимы, мы отправим правильный режим вперед в качестве заголовка ответа
- Удостоверьтесь, что мы показываем только исправление для Internet Explorer. Мы просто используем обнаружение браузера на стороне сервера и отправляем его только в IE
Чтобы добавить заголовок в PHP, мы можем просто добавить это на нашу страницу:
if (isset($_SERVER['HTTP_USER_AGENT']) &&
(strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== false))
header('X-UA-Compatible: IE=edge,chrome=1');
Или вы можете добавить его в свой .htaccess файл следующим образом:
<FilesMatch "\.(htm|html|php)$">
<IfModule mod_headers.c>
BrowserMatch MSIE ie
Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
</IfModule>
</FilesMatch>
Ссылка на оригинальную статью, отметьте комментарии для возможных оговорок. Также включает реализацию для С#.
Исправить неправильное значение X-UA-Compatible раз и навсегда
Надеюсь, это поможет!
Ответ 4
.. может ли это быть хорошим ответом?
Установить HTTP-заголовок с PHP:
Это не моя работа, но я надеюсь, что она полезна и для других.
Ответ 5
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
См. эту статью для возможного исправления
Ответ 6
Если вы загружаете/создаете код проверки src, вы можете добавить поддержку самостоятельно.
Добавьте следующее в файл, например html5-meta-X-UA-Compatible.rnc
). Затем включите его в html5full.rnc
.
Я сделал это, и он хорошо работает для проверки.
meta.http-equiv.X-UA-Compatible.elem =
element meta { meta.inner & meta.http-equiv.X-UA-Compatible.attrs }
meta.http-equiv.X-UA-Compatible.attrs =
( common.attrs.basic
& common.attrs.i18n
& common.attrs.present
& common.attrs.other
& meta.http-equiv.attrs.http-equiv.X-UA-Compatible
& meta.http-equiv.attrs.content.X-UA-Compatible
& ( common.attrs.aria.role.presentation
| common.attrs.aria.role.menuitem
)?
)
meta.http-equiv.attrs.http-equiv.X-UA-Compatible = attribute http-equiv {
xsd:string {
pattern = "X-UA-Compatible"
}
}
meta.http-equiv.attrs.content.X-UA-Compatible = attribute content {
xsd:string {
pattern = "IE=((edge)|(EmulateIE(7|8|9|10))|7|8|9|10|11)(,chrome=(1|0))?"
}
}
common.elem.metadata |= meta.http-equiv.X-UA-Compatible.elem
Ответ 7
Удалите ,chrome=1
из метатега, он будет работать нормально. С помощью валидатора:
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Ответ 8
У меня была одна и та же проблема, и добавление и окружение всей линии устраняло ситуацию.
<!--[if IE]><meta http-equiv="x-ua-compatible" content="IE=9" /><![endif]-->