Ссылка элемента отсутствует свойство атрибута атрибута
<!DOCTYPE html>
...
<link rel='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
Почему валидатор (http://validator.w3.org/) отвергает это? Какой атрибут "требуется", о котором я не знаю?
Ошибка:
Строка ошибки 408, столбец 142: ссылка элемента отсутствует требуемый атрибут имущество.... /modules/ 14ce1e21/peadig-eucookie.css 'type =' text/css ' media = 'all'/" > Атрибуты для ссылки на элемент: глобальные атрибуты href crossorigin rel media hreflang type sizes Кроме того, атрибут title имеет специальную семантику по этому элементу.
Ответы
Ответ 1
Совет от @stevelove, по-видимому, является практическим решением, но теоретически отвечает на вопрос "почему":
Хотя элемент link
безоговорочно недействителен в body
в более старых спецификациях HTML, HTML5 имеет более разрешительные правила. Согласно HTML 5.1 Nightly (что более или менее то, что валидатор пытается не отставать), элемент link
разрешен в теле документа тоже (где угодно) допускается использование фразы), при условии, что он имеет атрибут itemprop
. Это, похоже, делает сообщение об ошибке еще более загадочным. Часть объяснения состоит в том, что валидатор фактически проверяет HTML5 + RDFa, а RDFa определяет атрибут property
. Проблема по-прежнему заключается в том, какое конкретное определение RDFa проверяет валидатор, поскольку определение должно также переопределять правила для HTML.
Информация в сообщении об ошибке устарела, так или иначе. Сообщения об ошибках, по-видимому, не обновляются так быстро, как основные функции валидатора.
Ответ 2
Добавить
property='stylesheet'
если вы не хотите переместить ссылку на <head>
документа.
<link rel='stylesheet' property='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
Ответ 3
Является ли ваш <link>
внутри <body>
? Если да, попробуйте поместить его в <head>
в верхней части документа.
Ответ 4
W3C поддерживающий HTML5 валидатор. Как указано в другом ответе, в дополнение к проверке требований в самой спецификации HTML5, валидатор также проверяет требования в спецификации HTML + RDFa 1.1:
http://www.w3.org/TR/html-rdfa/
И хотя сама спецификация HTML говорит, что link
обычно не допускается в теле *, спецификация RDFa говорит, что если элемент link
имеет атрибут property
, он разрешен в теле.
Так что сообщение валидатора в основном говорит: 「Элемент link
разрешен только здесь, если он имеет атрибут property
. Но этот конкретный элемент link
не имеет атрибута property
. 」
* Сама спецификация HTML также говорит, что элемент link
разрешен в теле, если он имеет атрибут itemprop
, но только если элемент link
не имеет значения rel
. (itemprop
- атрибут "Microdata", цель которого в основном совпадает с атрибутом RDFa property
).
Таким образом, у нас есть два разных атрибута, которые независимо влияют на то, где в документе может отображаться элемент link
, и это усложняет логику проверки в валидаторе таким образом, что это затрудняет испускание лучшего, более полезного сообщение об ошибке для этого случая.
Ответ 5
Он хочет, чтобы это было в твоей голове. Однако, если css не слишком важно загрузить сразу, вы получите инструмент google pagespeed, предлагающий вам поместить его в нижнюю часть тела.
В качестве примера я использую одну из тем jquery (redmond) для создания автозаполнения. Не нужно помещать это в верхнюю часть моей страницы, так как это просто замедлит все остальное.
Итак, не беспокойтесь о совершенной проверке w3c.
Ответ 6
Просто для будущих потребностей, вот мой комментарий:
В страница w3c мы имеем следующий комментарий:
Если используется атрибут rel, элемент ограничен головкой элемент. При использовании с атрибутом itemprop элемент может быть используется как в элементе головы, так и в теле страницы, при условии, что ограничения модели микроданных.
Таким образом, ошибку можно решить, изменив rel
на itemprop
, потому что rel
должен использоваться в голове, а
можно использовать в теле.
Надеюсь, это поможет кому-то.