Czy typ = „text / css” jest konieczny w znaczniku <link>?

192

Zastanawiałem się, czy konieczne jest użycie <link rel="stylesheet" type="text/css" href=...> ponad <link rel="stylesheet" href=...>. Te rel="stylesheet"znaki informacyjne, że jest to arkusz stylów - tak text/cssw rzeczywistości nie dodać czegoś o ile mi wiadomo.

Jedynym formatem arkusza stylów używanym przez HTML jest CSS, więc co text/css„mówi” przeglądarce? Niektóre witryny wydają się dodawać type="text/css"atrybut ( http://www.jquery.com/ ), podczas gdy inne nie ( http://www.youtube.com/ ).

Więc jakie jest zastosowanie type="text/css"w<link rel="stylesheet"> elemencie, a jest to konieczne, aby uwzględnić go?

pimvdb
źródło
1
Może to zostały wprowadzone do działania jako awaryjne dla serwerów, które nie zwracają poprawne MIME-typena .cssplikach, ale wydaje się, że nigdy nie był konieczny. Używam tego tylko dla zachowania spójności.
pogoń
Coś, na co właśnie wpadłem, nie określaj type = "", inaczej IE nie załaduje twojego arkusza stylów.
mhenry1384
Obecnie witryna jquery.com nie korzysta type="text/css", ale witryna Stackoverflow nadal z niej korzysta.
Marco Demaio,

Odpowiedzi:

149

Nie jest to wymagane w specyfikacji HTML5, ale jest wymagane w przypadku starszych wersji HTML.

HTML 4 W3.org spec

http://www.w3.org/TR/html40/struct/links.html#edef-LINK http://www.w3.org/TR/html40/present/styles.html

Typ oznacza typ arkusza stylów MIME. Jedyną obsługiwaną wartością, jaką kiedykolwiek widziałem, jest Text / CSS, prawdopodobnie dlatego HTML5 ją upuścił. Wyobrażam sobie, że mieli to dla wcześniejszych wersji, aby umożliwić przyszłe możliwości ekspansji, które nigdy się nie wydarzyły.

Używając HTML5 i nie określając typu, do tej pory nie miałem problemów ze zgodnością, nawet podczas testowania starszych wersji IE.

Tom Gullen
źródło
24
może być wymagane w specyfikacji HTML4, ale żadna przeglądarka tak naprawdę tego nie wymusza.
Spudley
4
Cóż, istnieje typ dla „image / ico”
maxisam
2
W rzeczywistości specyfikacja HTML4.01 nie wydaje się wymagać typeatrybutu.
Wszyscy pracownicy są niezbędni
30

Nie jest wymagane, nie.

Część HTML standardu życia jesteś zainteresowany jest elementem , który stanowi:link

linkElement musi mieć albo relatrybut lub itempropatrybut, ale nie oba.

typeAtrybut daje typ MIME połączonego zasobu. Jest to czysto doradcze. Wartość musi być poprawnym ciągiem typu MIME.

W przypadku zewnętrznych łączy zasobów typeatrybut ten służy jako wskazówka dla klientów użytkownika ...

alexmuller
źródło
Co oznacza „jako wskazówka dla programów klienckich…”? Co to są „aplikacje klienckie”?
ScottyBlades
@ScottyBlades Dobre pytanie! Agent użytkownika to wszystko, co może działać w imieniu użytkownika, aby pobrać (w tym przypadku) kod HTML. Zazwyczaj jest to przeglądarka internetowa, ale może to być również klient terminalowy, taki jak curl.
alexmuller
6

HTML4.01 nie wymaga typeatrybutu na <link>znaczniku. Zgodnie ze specyfikacją typeatrybut jest wskazówką dla przeglądarki. Jeśli przeglądarka nie obsługuje wskazanego typu treści, może pominąć pobieranie.

type = content-type [CI]

Ten atrybut daje wskazówkę dotyczącą typu zawartości dostępnej pod adresem docelowym łącza. Umożliwia agentom użytkownika wybranie mechanizmu rezerwowego zamiast pobierania zawartości, jeśli zostanie im zalecone, że otrzymają treść w typie, którego nie obsługują.

Autorzy, którzy używają tego atrybutu, biorą odpowiedzialność za zarządzanie ryzykiem, że może ono stać się niezgodne z treściami dostępnymi pod docelowym adresem linku.

  • UWAGA: <link>odsyła do <a>definicji typeatrybutu.
Wszyscy pracownicy są niezbędni
źródło
1
Jest to najbardziej pomocna odpowiedź => w zasadzie: użyj atrybutu type tylko wtedy, gdy przeglądarka może nie obsługiwać type => bezużytecznego dla standardowych plików internetowych, takich jak CSS.
jave.web
4

Rozumiem, że pozwala to na specyfikację arkuszy stylów w formatach innych niż text / css.

Chociaż stał się dominującym (i standardowym) formatem dostarczania arkuszy stylów dla dokumentów HTML (X), specyfikacja jest w rzeczywistości wystarczająco szeroka, aby umożliwić przekazywanie różnych typów MIME, po prostu standardowe przeglądarki nie implementują ich.

GShenanigan
źródło
1

Nie dotyczy większości osób, ale niektóre systemy (przynajmniej Microsoft SharePoint 2013) będą używać tego atrybutu tego typu podczas opracowywania sposobu przetwarzania HTML (np. Podczas tworzenia pliku strony .master).

David Gilbertson
źródło
-1

Nie, to oznacza po prostu typ MIME, został przestarzały w HTML, Możemy go upuścić bez kompatybilności z przeglądarką.

prasen sinha
źródło