Czy Doctype jest potrzebny do dokumentów HTML5


12

Niedawno odbyłem rozmowę kwalifikacyjną i jedno z pytań brzmiało: „Czy do dokumentów HTML 5 potrzebny jest doctype?”. Odpowiedziałem „nie”, ale mam wrażenie, że się mylę. Z w3 wygląda na to, że jest to absolutnie wymagane, ale jeśli napiszę prosty HTML

<html>
    <body>
        <input type="color" disabled/>
    </body>
</html>

zapisz go jako HTML i spróbuj otworzyć w Chrome - działałoby idealnie, z nowym wejściem kolorów (wyłączone). Dane wejściowe to HTML5 oraz atrybut.

Pytanie brzmi - czy muszę określać typ dokumentu, czy nie? Jaka byłaby poprawna odpowiedź na rozmowę?


1
Myślę, że można argumentować, że bez tego Doctypeelementu nie jest to dokument HTML5.
MetaFight,

Możesz wpisać hello worldw edytorze tekstu, zapisać go jako HTML, a będzie renderowany w Chrome. Okazuje się, że Chrome (i wiele innych przeglądarek) umieszcza dla ciebie różne rzeczy, nawet jeśli jest to „wymagane”.
intcreator

Odpowiedzi:


14

Prawidłowa odpowiedź brzmi „to zależy”.

DOCTYPE jest opcjonalny dla dokumentów HTML5 w składni XHTML (tj. Dokumentów XHTML5):

Dokumenty XML mogą w razie potrzeby zawierać DOCTYPE, ale nie jest to wymagane, aby zachować zgodność z tą specyfikacją.

Dokument DOCTYPE jest wymagany dla dokumentów HTML5 w składni HTML :

Dokumenty muszą składać się z następujących części, w podanej kolejności:

[…]

3. DOCTYPE.

Wyjątki


1
To kompletna odpowiedź, jeśli „jest potrzebny” jest interpretowany jako „jest wymagany przez specyfikacje”. Można to również interpretować jako odnoszące się do efektów praktycznych. W takim przypadku odpowiedzią byłoby, że ciąg znaków typu dokumentu jest potrzebny w składni HTML, aby wprowadzić przeglądarki do „trybu standardowego”.
Jukka K. Korpela

Chciałbym, aby ta odpowiedź była lepsza, gdybyś opracował, kiedy dokument jest w formacie HTML vs.Xhtml. Co to oznacza dla przeglądarek - w jaki sposób zdecydowali, którą składnią ocenić?
tymczasowego

7

Ja również odpowiedziałbym „nie” (tak się składa, że ​​tak się składa).

Jednak http://www.w3.org/TR/html5/syntax.html#the-doctype mówi:

8.1.1 DOCTYPE

DOCTYPE jest wymaganą preambułą.

Dokumenty DOCTYPE są wymagane ze względu na starsze wersje. W przypadku pominięcia przeglądarki zwykle używają innego trybu renderowania, który jest niezgodny z niektórymi specyfikacjami. Uwzględnienie DOCTYPE w dokumencie gwarantuje, że przeglądarka podejmie wszelkie starania, aby postępować zgodnie z odpowiednimi specyfikacjami.

BTW, GIYF


1
Cytowana część dotyczy tylko składni HTML.
Jukka K. Korpela

A tytuł pytania brzmi „Czy Doctype jest potrzebny do dokumentów HTML5” (QED).
Mawg mówi o przywróceniu Moniki

1
Specyfikacja HTML5 wyraźnie i zauważalnie mówi, że definiuje dwie składnie HTML5, jedną opartą na oryginalnym HTML i drugą w pełni zgodną z XML. To, co zacytowałeś, nie odpowiada na pytanie, ponieważ dotyczy tylko jednej ze składni.
Jukka K. Korpela,

Ach! Wreszcie rozumiem. Dziękuję bardzo za wyjaśnienie.
Mawg mówi o przywróceniu Moniki

2

Jeśli chcesz napisać dokument HTML5 zgodny ze standardem w3c, <!DOCTYPE html>jest to wymagane.

Ale w praktyce nie zawsze potrzebujesz typu dokumentu, ponieważ każda popularna przeglądarka internetowa renderuje twój dokument niezależnie. Jednak niektóre przeglądarki używają trybu starszego typu, w którym niektóre funkcje nie są poprawnie interpretowane, a zamiast tego obsługuje to wcześniejsza wersja przeglądarki (większość związana z układem).

Która odpowiedź jest odpowiednia dla tego wywiadu ? To zależy od mentalności osoby, która przeprowadziła z tobą wywiad. Podczas rozmowy kwalifikacyjnej nie ma znaczenia, czy masz rację, czy nie. Ważne jest tylko, jakie wrażenie wywrzesz na ankiecie.


Interesujące jest dla mnie pytanie, czy DOCTYPE HTML5 jest wymagany w praktyce w roku 2020? Co robią obecne przeglądarki (FF, Chrome, Edge), jeśli jeszcze go pominę, dostosowuję kod HTML-5?
Panu Logic
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.