<!DOCTYPE html>
...
<link rel='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
¿Por qué el validador ( http://validator.w3.org/ ) rechaza esto? ¿Qué atributo es "obligatorio" del que no tenga conocimiento?
El error:
Línea de error 408, columna 142: Falta la propiedad de atributo requerida en el enlace del elemento. … / Modules / 14ce1e21 / peadig-eucookie.css 'type =' text / css 'media =' all '/> Atributos para el enlace del elemento: atributos globales href crossorigin rel media hreflang tamaños de tipo Además, el atributo title tiene una semántica especial en este elemento.
<link rel='stylesheet' id='someId' href='folder/file.css' type='text/css' media='all' property='' />
Funciona en todos los navegadores y valida. Se trata del atributoproperty
.Respuestas:
El consejo de @stevelove es aparentemente la solución práctica, pero aquí hay una respuesta teórica a la pregunta del "por qué":
Aunque un
link
elemento es incondicionalmente inválido enbody
especificaciones HTML anteriores, HTML5 tiene reglas más permisivas. De acuerdo con HTML 5.1 Nightly (que es más o menos lo que el validador intenta mantenerse al día), ellink
elemento también está permitido en el cuerpo del documento (siempre que se permita el contenido de redacción), siempre que tenga unitemprop
atributo. Esto parece hacer que el mensaje de error sea aún más desconcertante. Parte de la explicación es que el validador en realidad está validando contra HTML5 + RDFa, y RDFa define elproperty
atributo. El problema sigue siendo qué definición específica de RDFa está comprobando el validador, ya que la definición también necesitaría redefinir las reglas para HTML.De todos modos, la información del mensaje de error está desactualizada. Aparentemente, los mensajes de error no se actualizan tan rápido como la funcionalidad básica del validador.
fuente
Añadir
property='stylesheet'
si no desea mover su enlace al
<head>
del documento.<link rel='stylesheet' property='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
fuente
¿Estás
<link>
dentro del<body>
? Si es así, intente ponerlo<head>
en la parte superior del documento.fuente
<style>
en la parte superior del documento en la parte superior del documento y colocar el resto en la parte inferior. Esta es la mejor forma de abrir una página más rápido. Puede encontrar documentos en la web sobre esto, PERO no siempre es posible hacerlo (y, a menudo, la eficiencia del código empresarial> rendimiento).Responsable del validador W3C HTML5 aquí. Como se señaló en otra respuesta, además de verificar los requisitos en la especificación HTML5 en sí, el validador también verifica los requisitos en la especificación HTML + RDFa 1.1:
http://www.w3.org/TR/html-rdfa/
Y aunque la especificación HTML en sí dice
link
que normalmente no está permitido en el cuerpo *, la especificación RDFa dice que si unlink
elemento tiene unproperty
atributo, está permitido en el cuerpo.Entonces, el mensaje del validador básicamente dice: 「El
link
elemento solo se permite aquí si tiene unproperty
atributo. Pero estelink
elemento en particular no tiene ningúnproperty
atributo. 」* La especificación HTML en sí misma también dice que el
link
elemento está permitido en el cuerpo si tiene unitemprop
atributo, pero solo si ellink
elemento no tiene unrel
valor. (itemprop
es el atributo “Microdata” cuyo propósito es básicamente el mismo que elproperty
atributo RDFa ).Entonces, tenemos dos atributos diferentes que afectan de forma independiente en qué lugar de un documento
link
se permite que aparezca el elemento, y eso complica la lógica de verificación en el validador de una manera que dificulta la emisión de un mensaje de error mejor y más útil para este caso.fuente
Solo para necesidades futuras, aquí está mi comentario:
En la página de w3c tenemos el siguiente comentario:
Entonces, el error se puede resolver cambiando
rel
poritemprop
, porquerel
se usará en la cabeza yitemprop
se puede usar en el cuerpo.Espero que ayude a alguien.
fuente
<link rel='stylesheet' property='stylesheet' href='custom.css' type='text/css' media='screen' />
Quiere que esté en tu cabeza. Sin embargo, si el CSS no es demasiado importante para cargarlo de inmediato, obtendrá la herramienta de velocidad de página de Google que le indicará que lo coloque en la parte inferior del cuerpo.
Como ejemplo, uso uno de los temas de jquery (redmond) para diseñar mi autocompletar. No es necesario poner esto en la parte superior de mi página, ya que ralentizará todo lo demás.
Por lo tanto, no se preocupe demasiado por la validación perfecta de w3c.
fuente