元素链接缺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中。
希望它有助于某人。