<!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)
Juk*_*ela 82
来自@stevelove的建议显然是实用的解决方案,但这里是"为什么"问题的理论答案:
尽管旧版HTML规范中的link
元素无条件无效body
,但HTML5具有更宽松的规则.根据HTML 5.1 Nightly(这或多或少是验证器试图跟上的内容),该link
元素也允许在文档正文中(只要允许使用措辞内容),前提是它具有itemprop
属性.这似乎使错误信息更加令人费解.部分解释是验证器实际上是针对HTML5 + RDFa进行验证,而RDFa定义了property
属性.问题仍然是验证器正在检查的特定RDFa定义,因为定义也需要重新定义HTML规则.
无论如何,错误消息中的信息已过时.错误消息显然没有像验证器的基本功能那样快速更新.
ste*_*ove 43
你<link>
在里面<body>
吗?如果是这样,请尝试将其放在<head>
文档的顶部.
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
中允许元素出现的位置,并且使得验证器中的检查逻辑复杂化,使得难以为此情况发出更好,更有用的错误消息.