<!DOCTYPE html>
...
<link rel='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
Warum lehnt der Validator ( http://validator.w3.org/ ) dies ab? Welches Attribut ist "erforderlich", das mir nicht bekannt ist?
Der Fehler:
Fehlerzeile 408, Spalte 142: Elementverknüpfung fehlt erforderliche Attributeigenschaft. … / Module / 14ce1e21 / peadig-eucookie.css 'type =' text / css 'media =' all '/> Attribute für Elementverknüpfung: Globale Attribute href crossorigin rel media hreflang-Typgrößen Auch das title-Attribut hat eine spezielle Semantik Element.
<link rel='stylesheet' id='someId' href='folder/file.css' type='text/css' media='all' property='' />
.. Funktioniert in allen Browsern und validates Es ist alles über das Attributproperty
.Antworten:
Der Rat von @stevelove ist anscheinend die praktische Lösung, aber hier ist eine theoretische Antwort auf die Warum-Frage:
Obwohl ein
link
Elementbody
in älteren HTML-Spezifikationen unbedingt ungültig ist , hat HTML5 freizügigere Regeln. Gemäß HTML 5.1 Nightly (mit dem der Prüfer mehr oder weniger Schritt halten will) ist daslink
Element auch im Dokumententext zulässig (wo immer Phrasierungsinhalte zulässig sind), sofern es über einitemprop
Attribut verfügt. Dies scheint die Fehlermeldung noch rätselhafter zu machen. Ein Teil der Erklärung ist, dass der Validator tatsächlich gegen HTML5 + RDFa validiert und RDFa dasproperty
Attribut definiert . Das Problem bleibt weiterhin, gegen welche spezifische RDFa-Definition der Validator prüft, da die Definition auch Regeln für HTML neu definieren müsste.Die Informationen in der Fehlermeldung sind ohnehin veraltet. Fehlermeldungen werden anscheinend nicht so schnell aktualisiert wie die Grundfunktionalität des Validators.
quelle
Hinzufügen
property='stylesheet'
Wenn Sie Ihren Link nicht zum
<head>
Dokument verschieben möchten .<link rel='stylesheet' property='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
quelle
Ist dein
<link>
in der<body>
? Wenn ja, platzieren Sie es<head>
oben im Dokument.quelle
<style>
oben in das Dokument und den Rest unten einfügen. Dies ist der beste Weg, um eine Seite schneller zu öffnen. Sie können im Web Dokumente zu diesem Thema finden, ABER es ist nicht immer möglich, dies zu tun (und häufig die Effizienz> Leistung des Geschäftscodes).W3C HTML5 Validator Betreuer hier. Wie in einer anderen Antwort ausgeführt, prüft der Validator nicht nur die Anforderungen in der HTML5-Spezifikation selbst, sondern auch die Anforderungen in der HTML + RDFa 1.1-Spezifikation:
http://www.w3.org/TR/html-rdfa/
Und während die HTML-Spezifikation selbst sagt, dass sie
link
normalerweise nicht im Body erlaubt ist says, sagt die RDFa-Spezifikation, dass einlink
Element, das einproperty
Attribut hat, im Body erlaubt ist.Diese Validator-Nachricht lautet also im Grunde: 「Das
link
Element ist hier nur zulässig, wenn es einproperty
Attribut hat. Dieses speziellelink
Element hat jedoch keinproperty
Attribut. 」* Die HTML-Spezifikation selbst besagt auch, dass das
link
Element im Hauptteil zulässig ist, wenn es einitemprop
Attribut hat - aber nur, wenn daslink
Element keinenrel
Wert hat. (itemprop
ist das Attribut "Mikrodaten", dessen Zweck im Wesentlichen dem des RDFa-property
Attributs entspricht).Wir haben also zwei verschiedene Attribute, die beide unabhängig voneinander beeinflussen, wo in einem Dokument das
link
Element angezeigt werden darf, und die die Überprüfungslogik im Validator so komplizieren, dass es für diesen Fall schwierig ist, eine bessere, hilfreichere Fehlermeldung auszugeben.quelle
Nur für zukünftige Bedürfnisse, hier ist mein Kommentar:
Auf der w3c-Seite haben wir folgenden Kommentar:
So kann der Fehler durch Ändern
rel
für behoben werdenitemprop
, darel
im Kopf unditemprop
im Körper verwendet werden soll.Hoffe es hilft jemandem.
quelle
<link rel='stylesheet' property='stylesheet' href='custom.css' type='text/css' media='screen' />
Es will, dass es in deinem Kopf ist. Wenn das CSS jedoch nicht zu wichtig ist, um es sofort zu laden, wird das Pagespeed-Tool von Google angezeigt, das Sie auffordert, es am unteren Rand des Körpers abzulegen.
Als Beispiel verwende ich eines der jquery-Themen (redmond), um meine automatische Vervollständigung zu gestalten. Sie müssen dies nicht oben auf meiner Seite einfügen, da dies nur alles andere verlangsamt.
Sorgen Sie sich also nicht zu sehr um die perfekte w3c-Validierung.
quelle