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

no9*_*no9 79 html

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

为什么验证器(http://validator.w3.org/)拒绝这个?我不知道什么属性是"必需的"?

错误:

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

haw*_*126 91

property='stylesheet'
Run Code Online (Sandbox Code Playgroud)

如果您不想将链接移动到<head>文档的链接.

<link rel='stylesheet' property='stylesheet' id='basecss-css'  href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你真的有用@ hawkeye126. (2认同)

Juk*_*ela 82

来自@stevelove的建议显然是实用的解决方案,但这里是"为什么"问题的理论答案:

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

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

  • 截至2016年,此错误消息仍然存在 (22认同)
  • 截至2015年,此错误消息仍然存在 (16认同)
  • 截至2014年,此错误消息仍然存在 (13认同)
  • 请参阅hawkeye126关于如何解决这个问题的答案. (5认同)

ste*_*ove 43

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

  • @stevelove(一年后/供将来参考)这通常不会优化.在所有可能的世界中,你应该在文档顶部的"<style>"中放置关键的首要css,并将其余部分放在底部.这是更快地打开页面的最佳方式.您可以在网上找到关于此的文档,但并不总是可以这样做(通常,业务代码的效率>性能). (10认同)
  • 除了验证之外,您应该始终将样式表放在文档的顶部,以避免阻止页面的其余部分呈现,如下所述:http://developer.yahoo.com/performance/rules.html#css_top (4认同)

sid*_*ker 15

这里是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中允许元素出现的位置,并且使得验证器中的检查逻辑复杂化,使得难以为此情况发出更好,更有用的错误消息.