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

时间:2013-08-31 15:30:39

标签: html

<!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'/&gt;元素链接的属性:全局属性href   crossorigin rel media hreflang type sizes另外,title属性   在这个元素上有特殊的语义。

6 个答案:

答案 0 :(得分:91)

添加

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

答案 1 :(得分:82)

@stevelove的建议显然是切实可行的解决方案,但这里是“为什么”问题的理论答案:

虽然旧版HTML规范link中的body元素无条件无效,但HTML5具有更宽松的规则。根据HTML 5.1 Nightly(这或多或少是验证器试图跟上的内容),文档正文中也允许link element(只要允许使用短语内容),前提是它具有{{ 1}}属性。这似乎使错误信息更加令人费解。部分解释是验证器实际上是针对HTML5 + RDFa进行验证,而RDFa定义了itemprop属性。问题仍然是验证器正在检查的特定RDFa定义,因为定义也需要重新定义HTML规则。

无论如何,错误消息中的信息已过时。错误消息显然没有像验证器的基本功能那样快速更新。

答案 2 :(得分:43)

<link>是否在<body>内?如果是这样,请尝试将其放在文档顶部的<head>

答案 3 :(得分:14)

这里是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值。propertylink是“微数据”属性,其目的与RDFa {{1}}属性基本相同。)

因此,我们有两个不同的属性,它们独立地影响文档中允许出现{{1}}元素的位置,并且使得验证器中的检查逻辑复杂化,使得难以发出更好的元素,这种情况下更有用的错误消息。

答案 4 :(得分:0)

它希望它在你的头脑中。但是,如果css不太重要,无法立即加载,您将获得google的pagespeed工具,告诉您将其放在正文的底部。

作为一个例子,我使用jquery主题之一(redmond)来设置自动完成的样式。不需要把它放在我的页面顶部,因为它只会减慢其他一切。

所以,不要过分担心完美的w3c验证。

答案 5 :(得分:0)

仅为了将来的需求,这是我的评论:

w3c page中,我们有以下评论:

  

如果使用rel属性,则元素仅限于头部   元件。当与itemprop属性一起使用时,元素可以是   在头部元素和页面正文中使用,受制于   微观数据模型的约束。

因此,可以通过更改rel的{​​{1}}来解决错误,因为itemprop将在头部使用,rel可以在正文中使用。< / p>

希望它对某人有帮助。