元素链接缺less必需的属性属性

<!DOCTYPE html> ... <link rel='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' /> 

为什么validation器( http://validator.w3.org/ )拒绝这个? 什么属性是“我需要”,我不知道?

错误:

错误行408,列142:元素链接缺less必需的属性属性。 … / modules / 14ce1e21 / peadig-eucookie.css'type ='text / css'media ='all'/>元素链接的属性:全局属性href crossorigin rel media hreflang type sizes另外,title属性在这个上有特殊的语义元件。

@stevelove的build议显然是实际的解决scheme,但是这里是对“为什么”问题的一个理论答案:

尽pipelink元素在旧HTML规范中是无条件无效的,但HTML5具有更宽松的规则。 根据HTML 5.1 Nightly(这或多或less是validation器试图跟上的), link元素也可以在文档主体中(只要允许有措辞内容),只要它具有itemprop属性即可。 这似乎使错误信息更加令人费解。 部分解释是validation器实际上是针对HTML5 + RDFa进行validation的,RDFa定义了property属性。 问题依然存在,validation器正在检查什么特定的RDFa定义,因为定义需要重新定义HTML的规则。

无论如何,错误信息中的信息已经过时了。 错误消息显然不像validation器的基本function那样快。

 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' /> 

<body>是你的<link> <body>吗? 如果是这样,请尝试将它放在文档顶部的<head>中。

W3C HTML5validation器维护者在这里。 正如在另一个答案中指出的那样,除了检查HTML5规范本身的要求外,validation器还检查HTML + RDFa 1.1规范中的要求:

http://www.w3.org/TR/html-rdfa/

虽然HTML规范本身说, link通常是不允许在正文*,RDFa规范说,如果一个link元素有一个property属性,它是允许在正文中。

所以validation者信息基本上是这样说的:「 link元素只有在具有property属性的情况下才允许。 但是这个特定的link元素没有property属性。

* HTML规范本身也会说如果link元素具有itemprop属性,那么link元素是允许的,但是只有当link元素没有rel值时才允许。 ( itemprop是“Microdata”属性,其目的与RDFa property属性基本相同)。

所以我们有两个不同的属性,它们独立地影响link元素允许出现在文档中的哪个位置,并且使得validation器中的检查逻辑复杂化,使得难以为这种情况发出更好,更有帮助的错误消息。

它希望它在你的脑海中。 但是,如果css不是非常重要的马上加载,你会得到谷歌的pagespeed工具告诉你把它放在身体的底部。

作为一个例子,我使用jQuery的主题之一(redmond)来devise我的自动完成。 没有必要把这个放在我的页面顶部,因为它只会减慢一切。

所以,不要太担心完美的W3Cvalidation。

只是为了将来的需要,这里是我的评论:

在w3c页面中,我们有以下评论:

如果使用了rel属性,则该元素被限制在head元素中。 当与itemprop属性一起使用时,该元素既可以在头元素中使用,也可以在页面的主体中使用,这受到微数据模型的限制。

所以这个错误可以通过改变itemprop rel来解决,因为rel用在头部, itemprop可以用在body中。

希望它有助于某人。