<!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/)拒绝这个?我不知道"required"的属性是什么?
错误:
错误行408,列142:元素链接缺少必需的属性属性 . ... / modules / 14ce1e21 / peadig-eucookie.css'type ='text / css'media ='all'/>元素链接的属性:全局属性href crossorigin rel media hreflang type sizes此外,title属性对此有特殊的语义元件 .
6 回答
来自@stevelove的建议显然是实用的解决方案,但这里是“为什么”问题的理论答案:
虽然在旧的HTML规范中,
body
中的link
元素无条件无效,但HTML5具有更宽松的规则 . 根据HTML 5.1 Nightly(这或多或少是验证器试图跟上的),link element也允许在文档正文中(只要允许使用短语内容),前提是它具有itemprop
属性 . 这似乎使错误信息更加令人费解 . 部分解释是验证器实际上是针对HTML5 RDFa进行验证,而RDFa定义了property
属性 . 问题仍然是验证器正在检查的特定RDFa定义,因为定义也需要重新定义HTML规则 .无论如何,错误消息中的信息已过时 . 错误消息显然没有像验证器的基本功能那样快速更新 .
加
如果您不想将链接移动到文档的
<head>
.你的
<link>
在<body>
里面?如果是这样,请尝试将其放在文档顶部的<head>
中 .这里是W3C HTML5验证器维护者 . 正如另一个答案所指出的,除了检查HTML5规范本身的要求之外,验证器还会检查HTML RDFa 1.1规范中的要求:
http://www.w3.org/TR/html-rdfa/
虽然HTML规范本身通常不允许
link
在正文*中,但RDFa规范说如果link
元素具有property
属性,则允许在正文中 .因此验证器消息基本上是在说,“
link
元素只有在具有property
属性时才允许使用 . 但是这个特定的link
元素没有property
属性 .link
_元素具有itemprop
属性,则允许在体内使用link
元素 - 但仅当link
元素没有rel
值时才允许.2820300_元素 . (itemprop
是“Microdata”属性,其目的与RDFaproperty
属性基本相同) .因此,我们有两个不同的属性,它们都独立地影响文档中允许出现
link
元素的位置,并且使得验证器中的检查逻辑复杂化,使得难以为此情况发出更好,更有用的错误消息 .它希望它在你的头脑中 . 但是,如果css不太重要,无法立即加载,您将获得google的pagespeed工具,告诉您将其放在正文的底部 .
作为一个例子,我使用jquery主题之一(redmond)来设置自动完成的样式 . 不需要把它放在我的页面顶部,因为它只会减慢其他一切 .
所以,不要过分担心完美的w3c验证 .
仅为了将来的需求,这是我的评论:
在w3c page中,我们有以下评论:
因此,可以通过更改
rel
来解决错误itemprop
,因为rel
将在头部使用,itemprop
可以在正文中使用 .希望它对某人有帮助 .