<!DOCTYPE html>
...
<link rel='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
Dlaczego walidator ( http://validator.w3.org/ ) odrzuca to? Jaki atrybut jest „wymagany”, o czym nie wiem?
Błąd:
Błąd w wierszu 408, kolumna 142: W łączu elementu brakuje wymaganej właściwości atrybutu. … / Modules / 14ce1e21 / peadig-eucookie.css 'type =' text / css 'media =' all '/> Atrybuty elementu link: Atrybuty globalne href crossorigin rel media rozmiary typu hreflang Ponadto atrybut title ma specjalną semantykę w tym element.
<link rel='stylesheet' id='someId' href='folder/file.css' type='text/css' media='all' property='' />
.. działa we wszystkich przeglądarkach, i potwierdza Chodzi o atrybucieproperty
.Odpowiedzi:
Rada @stevelove jest najwyraźniej praktycznym rozwiązaniem, ale oto teoretyczna odpowiedź na pytanie „dlaczego”:
Chociaż
link
element jest bezwarunkowo nieprawidłowy wbody
starszych specyfikacjach HTML, HTML5 ma bardziej liberalne reguły. Zgodnie z HTML 5.1 Nightly (który jest mniej więcej tym, za czym walidator stara się nadążyć),link
element jest dozwolony również w treści dokumentu (wszędzie tam, gdzie dozwolone jest sformułowanie treści), pod warunkiem, że maitemprop
atrybut. Wydaje się, że komunikat o błędzie jest jeszcze bardziej zagadkowy. Częścią wyjaśnienia jest to, że walidator faktycznie sprawdza zgodność z HTML5 + RDFa, a RDFa definiujeproperty
atrybut. Nadal pozostaje problem, z jaką konkretną definicją RDFa sprawdza walidator, ponieważ definicja musiałaby również przedefiniować reguły dla HTML.W każdym razie informacje zawarte w komunikacie o błędzie są nieaktualne. Najwyraźniej komunikaty o błędach nie są aktualizowane tak szybko, jak podstawowa funkcjonalność walidatora.
źródło
Dodaj
property='stylesheet'
jeśli nie chcesz przenosić swojego łącza do
<head>
dokumentu.<link rel='stylesheet' property='stylesheet' id='basecss-css' href='http://www.someurl.com/modules/14ce1e21/peadig-eucookie.css' type='text/css' media='all' />
źródło
Czy jesteś w
<link>
środku<body>
? Jeśli tak, spróbuj umieścić go<head>
u góry dokumentu.źródło
<style>
części strony widocznej na ekranie u góry dokumentu, a resztę na dole. To najlepszy sposób na szybsze otwieranie strony. Możesz znaleźć w sieci dokumenty na ten temat, ALE nie zawsze jest to możliwe (i często wydajność kodu biznesowego> wydajność).Opiekun walidatora W3C HTML5 tutaj. Jak wskazano w innej odpowiedzi, oprócz sprawdzania wymagań w samej specyfikacji HTML5, walidator sprawdza również wymagania specyfikacji HTML + RDFa 1.1:
http://www.w3.org/TR/html-rdfa/
I chociaż sama specyfikacja HTML mówi, że
link
normalnie nie jest dozwolone w treści *, specyfikacja RDFa mówi, że jeślilink
element maproperty
atrybut, jest on dozwolony w treści.Tak więc ten komunikat walidatora zasadniczo mówi: 「
link
Element jest tutaj dozwolony tylko wtedy, gdy maproperty
atrybut. Ale ten konkretnylink
element nie maproperty
atrybutu. 」* Sama specyfikacja HTML również mówi, że
link
element jest dozwolony w treści, jeśli maitemprop
atrybut - ale tylko wtedy, gdylink
element nie marel
wartości. (itemprop
to atrybut „Microdata”, którego cel jest zasadniczo taki sam jakproperty
atrybutu RDFa ).Mamy więc dwa różne atrybuty, które niezależnie wpływają na to, gdzie w dokumencie
link
może pojawić się element, i to komplikuje logikę sprawdzania w walidatorze w sposób, który utrudnia emitowanie lepszego, bardziej pomocnego komunikatu o błędzie w tym przypadku.źródło
Tylko dla przyszłych potrzeb, oto mój komentarz:
Na stronie w3c mamy następujący komentarz:
Więc błąd można rozwiązać, zmieniając
rel
naitemprop
, ponieważrel
ma być używany w głowie iitemprop
może być używany w ciele.Mam nadzieję, że to komuś pomoże.
źródło
<link rel='stylesheet' property='stylesheet' href='custom.css' type='text/css' media='screen' />
Chce, żeby to było w twojej głowie. Jeśli jednak css nie jest zbyt ważny, aby załadować się od razu, otrzymasz narzędzie Google Pagespeed z poleceniem umieszczenia go na dole treści.
Jako przykład używam jednego z motywów jQuery (redmond), aby stylizować moje autouzupełnianie. Nie ma potrzeby umieszczania tego na górze mojej strony, ponieważ spowolni to wszystko inne.
Więc nie martw się zbytnio o idealną walidację w3c.
źródło