Sprawdzanie poprawności HTML: czy warto?

52

Jakie są zalety i wady (jeśli w ogóle) upewnienia się, że wszystkie strony sprawdzają poprawność w porównaniu z niepoprawnym kodem HTML, który jednak działa na wszystkich głównych przeglądarkach?

Czy posiadanie prawidłowego kodu HTML po uruchomieniu Javascript jest równie ważne?

Thomas Bonini
źródło
5
To nie odpowiada na twoje pytanie, ale ... umieszczenie doctype na twojej stronie spowoduje przejście przeglądarki do trybu standardowego zamiast dziwacznego. Sprawdź tryb dziwactwa, aby zobaczyć, co mam na myśli.
Evan Plaice,
1
@Evan Plaice - Nie ma jednak żadnego DOCTYPE. Niektóre DOKTYPY wywołują dziwactwa lub prawie standardowe tryby. Specyfikacja HTML5 wyjaśnia to bardziej szczegółowo.
luiscubal
1
@luiscubal Czy to nowość w HTML 5, ponieważ z en.wikipedia.org/wiki/Quirks_mode stwierdza: „... jeśli obecny jest pełny DOCTYPE, przeglądarka będzie używać trybu standardowego, a jeśli go nie ma, przeglądarka użyje trybu dziwactw . ”
Evan Plaice,
@Evan Plaice Nie jestem pewien co do poprzednich wersji HTML, ale HTML5 wyraźnie określa, co zrobić ze starożytnymi DOCTYPES
luiscubal
1
@Evan Plaice Innymi słowy, „DTD HTML 2.0 poziom 1” uruchamia tryb dziwactw.
luiscubal

Odpowiedzi:

42

Myślę, że zdecydowanie warto to zrobić , ale nigdy nie powinieneś być niewolnikiem walidacji - to głupia gra.

http://www.codinghorror.com/blog/2009/03/html-validation-does-it-matter.html

  1. Sprawdź poprawność kodu HTML. Dowiedz się, co to znaczy mieć prawidłowy znacznik HTML. Zrozum oprzyrządowanie. Więcej informacji jest zawsze lepsze niż mniej informacji. Dlaczego warto latać w ciemno?

  2. Nikt nie dba o to, czy Twój HTML jest prawidłowy. Oprócz Ciebie. Jeśli chcesz. Nie zastanawiaj się przez chwilę, że tworzenie doskonale poprawnego HTML-a jest ważniejsze niż prowadzenie witryny, oferowanie funkcji, które zachwycają użytkowników lub wykonywanie pracy.

Jeff Atwood
źródło
3
Muszę zająć drugie miejsce. Widziałem wiele problemów z bibliotekami javascript, które można obwiniać za nieprawidłowe HTML. Wiele zagnieżdżonych formularzy i nielegalnie zamknięte znaczniki są głównymi sprawcami. Jak mówi Jeff, nie bądź niewolnikiem, ale nie narzekaj, gdy jQuery nie działa, ponieważ twoja strona nie jest poprawnym HTML (XHTML, HTML 5 lub cokolwiek innego, co wybierzesz jako typ dokumentu).
Gareth Farrington
@Jeff Atwood: czy nie mogę się bardziej zgodzić, gdy mówisz „Nikt nie dba o to, czy Twój HTML jest prawidłowy. Z wyjątkiem ciebie”. Smutne, ale prawdziwe, klienci naprawdę nie dbają.
Marco Demaio,
@MarcoDemaio Dlaczego to smutne? Jako klient i użytkownik końcowy bardziej martwię się o to, czy witryna działa we wszystkich przeglądarkach (z których większość nie jest zgodna ze standardami na początku), niż o to, czy się sprawdza. Prawidłowy HTML naprawdę nie ma znaczenia. Google, Facebook, Twitter, ta strona itp. Żadna odpowiednia witryna nie ma prawidłowego znacznika. Dlaczego? Ponieważ prawidłowy HTML nie powoduje niczego, ale powoduje powiększenie strony i zwiększenie kosztów przepustowości.
NullUserException
To samo dotyczy idealnie wciętych znaczników. Jest to tym bardziej bezużyteczne, że w 100% marnuje przepustowość i nie ma praktycznego zastosowania.
NullUserException
@NullUserException: Myślę, że to smutne, ponieważ dowiedziałem się, że sprawdzone strony internetowe zwykle znacznie lepiej renderują we wszystkich przeglądarkach. Zobacz mój komentarz do odpowiedzi Alana: webmasters.stackexchange.com/a/373/1429 Sprawdzanie poprawności strony internetowej zapisanej dla mnie i wciąż oszczędza mi dużo czasu. O doskonałym wciętym znaczniku, o którym nigdy nie słyszałem o specyfikacji. Może chciałbym wciąć o 3 spacje, a ty możesz o wcięcie o jeden.
Marco Demaio,
32

Uważam prawidłowy HTML za wartościowy cel, ale nie widzę go jako całościowego budowania dobrych stron internetowych.

Sztuczka polega na tym, że twoje znaczniki mogą być całkowicie poprawne, ale mogą nie być semantyczne - np. Używając tabel do układu lub nawigacji. Istnieje różnica między poprawnym kodem a kodem semantycznym.

Z drugiej strony, jeśli korzystasz ze skryptów reklamowych lub zewnętrznych, mogą wstawić własne znaczniki, które mają szansę naprawdę zepsuć własne.

Grant Palin
źródło
22

Myślę, że warto, ponieważ próbowałem zweryfikować wiele błędów znaczników i błędów logicznych. Jest to jedna z tych „niezbędnych, ale niewystarczających” rzeczy. Prawidłowe znaczniki, takie jak kod, który kompiluje (lub pobiera za pośrednictwem JSlint) wolny od błędów, ostrzeżeń i wskazówek, jest dobrym pierwszym krokiem do poprawnego działania.

Alan
źródło
+1 całkowicie zgadza się w tej sprawie. Sprawdzanie poprawności stron pozwala zaoszczędzić mnóstwo czasu po JS i błędach, które wydają się tak tajemnicze, i są spowodowane jedynie działającym lub nie zamkniętym znacznikiem HTML. Co więcej, dzięki narzędziom takim jak FF addon Html Validator [ addons.mozilla.org/en-US/firefox/addon/html-validator/] nie jest trudno zweryfikować wszystkie strony lokalnie.
Marco Demaio
9

Dużym plusem prawidłowego HTML jest to, że twoja strona jest wtedy bardziej dostępna dla rzeczy innych niż „główne przeglądarki”. Wszystkie „główne przeglądarki” mają nieskończone obejścia, aby poradzić sobie z wszystkimi nieprawidłowymi śmieciami zaludniającymi WWW. Jednak trzymanie się prawidłowego kodu HTML pomaga, na przykład, jeśli ktoś używa przeglądarki dla osób niedowidzących lub uzyskuje dostęp do stron w trybie offline itp.


źródło
8

Walidacja sama w sobie nie jest tak krytyczna, ponieważ niewiele przeglądarek jest w 100% zgodnych, a specyfikacja nie jest w 100% jasna, jak interpretować reguły.

Jednak poprawny kod HTML pozwala lepiej dostosować i ulepszyć witrynę. Wraz ze zmianami standardów będą one zazwyczaj migrować do przodu, a jeśli nowa witryna jest ważna, aktualizacja do najnowszej wersji powinna być łatwiejsza.

Dół, będąc ważnym, ułatwia pozostanie na szczycie gry i być jak najbardziej kompatybilny z jak najszerszą publicznością.

MrChrister
źródło
4

Najlepszym rozwiązaniem jest sprawdzenie, który nieprawidłowy HTML jest zły, a który nieprawidłowy HTML nie ma znaczenia.

Na przykład zapomnienie o zamknięciu <div>tagu jest bardzo złe , ponieważ twój układ prawie na pewno zepsuje się w jednej lub kilku przeglądarkach.

Jednak używanie <br>zamiast <br />w XHTML nie ma znaczenia - wszystkie przeglądarki bez problemu interpretują oba jako podział wiersza. Użycie targetatrybutu w linkach jest nieprawidłowe, ale najgorszym scenariuszem jest to, że przeglądarka nie otwiera łącza w nowym oknie.

DisgruntledGoat
źródło
targetjest poprawny w przejściowym XHTML i tylko masochiści używają ścisłego. Pominięcie zamykającego ukośnika spowoduje, że strona będzie nieprawidłowym kodem XML, co prawdopodobnie dezorientuje zgarniacze ekranu. Jeśli zdecydujesz się na użycie XHTML, twoja strona powinna mieć przynajmniej poprawny XML.
Tgr
1
@Tgr: Zabawne, myślałem, że masochiści wolą tryb niestandardowy. Nawet przejściowe dokumenty mają swoje problemy (w trybie „prawie standardów” itp.)
DisgruntledGoat
1
Twierdziłbym, że Strict jest niezbędny - po co ryzykować przestarzały kod i tryb dziwactw. Korzystanie ze ścisłego nie wiąże się z żadnymi kosztami, poza tym zachęca ono do uzyskania dodatkowych informacji na temat preferowanej wersji znaczników.
CJM,
3

Podczas uruchamiania walidatora należy sprawdzić błędy, które daje, w poszczególnych przypadkach. Czy sprawdzanie poprawności jest ważne? Dla mnie tak, to bardzo ważne. Ale czy to wymóg? Nie.

Rzeczy takie jak wielokrotne używanie tego samego identyfikatora (zamiast klasy), umieszczanie elementów na poziomie bloku wewnątrz elementów na poziomie (zwykle te elementy również nie pasują semantycznie w ten sposób), brak atrybutów alt na obrazach (słaba dostępność dla osób z zaburzeniami ) są ważne. Rzeczy takie jak nieznane atrybuty tagów NIE są ważne. W ogóle. Frameworki JavaScript, takie jak Dojo lub ten okropny pasek mediów społecznościowych Meebo, używają niestandardowych atrybutów jako haczyków, a specyfikacja HTML stwierdza, że ​​są one dozwolone i że każdy nieznany atrybut należy zignorować. Walidator ich nie ignoruje, ale generuje błędy. Te błędy można zignorować.

Podczas sprawdzania poprawności nie należy zakładać, że jeśli masz błędy, robisz to źle. Semantyka jest znacznie ważniejsza i tak się składa, że ​​prawidłowy HTML jest często naturalnym wynikiem posiadania właściwej semantyki.

Bryson
źródło
Zgadzam się - zweryfikuj swoją stronę internetową, ale w niektórych okolicznościach możesz zignorować ostrzeżenia, o ile wiesz, dlaczego one istnieją
Casebash,
3

Jednym z powodów przetestowania witryny pod kątem prawidłowego kodu HTML jest to, że zapewnia ona, że ​​pająki wyszukiwarek będą mogły w pełni zaindeksować i ustalić znaczenie stron. Jeśli nie mogą tego zrobić z powodu źle sformułowanego kodu HTML (który może działać z głównych przeglądarek z przyczyn historycznych), potencjalnie ograniczasz swoje pozycje w wyszukiwarkach.

Pojawiły się również spekulacje, że podczas gdy główne wyszukiwarki dobrze radzą sobie ze źle sformatowanym HTML, mogą również przypisywać „punkty” jakości strony za poprawność, co dodatkowo wpływa na twoją pozycję w rankingu na tak wysoką, jak na to zasługuje.

JasonBirch
źródło
2
Google kategorycznie stwierdził, że nieprawidłowy HTML nie ma wpływu na ranking. Widzę jednak przypadek, w którym HTML jest tak zniekształcony, że rzeczywista treść strony nie może zostać odczytana przez pająki - chociaż w tym przypadku jest prawie pewne, że przeglądarki zaczną mieć problemy z renderowaniem.
DisgruntledGoat
@DisgruntledGoat Masz rację, oto odniesienie do tego: youtube.com/watch?v=FPBACTS-tyg
JasonBirch
@DisgruntledGoat Oczywiście ... Sam Google jest pełen nieprawidłowego HTML i pamiętam, że powiedzieli, że tak naprawdę ich to nie obchodzi i że dobrze jest mieć nieprawidłowy HTML, jeśli to oznacza szybsze ładowanie.
NullUserException
3

Naprawdę nie sądzę, żeby to miało już znaczenie. Kiedyś byłem niewolnikiem walidacji, teraz rzadko go sprawdzam. Być może wypaliło mnie to, że upewniłem się, że moja strona jest ważna, a może już mnie to nie obchodziło, bo nikt inny tego nie zrobi. Mogę zagwarantować, że 99,9% naszych gości nawet nie wie, co to jest, a nawet obchodzi, czy to zrobili. Przyszłe oprogramowanie przeglądarki może, ale kiedy nadejdzie ten dzień, będę się tym martwić.


źródło
2

Sprawdzanie poprawności jest przydatne, ponieważ może pomóc w wykryciu trudnych do złapania błędów, takich jak

<input name=foo value=<?php echo htmlspecialchars($_GET['foo']); ?> />

lub nieprzewidywalne zachowanie przeglądarki (na przykład umieszczanie elementów blokowych aw przeglądarce Firefox może czasem psować się w brzydki sposób).

Tgr
źródło
2

Nikt jeszcze nie wspomniał, że nieprawidłowy HTML może spowolnić renderowanie, podczas gdy przeglądarka stara się zrozumieć niestandardowy HTML podczas wyświetlania.

BradB
źródło
Głosowałbym za tym, gdybym mógł. I bardzo wątpię, to nie ma żadnego wpływu obserwowalny; Byłbym bardziej zaniepokojony poprawnym znacznikami, które powodują powiększanie strony i wymagają więcej czasu na załadowanie (szczególnie w przypadku wolniejszych / mobilnych połączeń).
NullUserException
@NullUserExceptions: Nie sądzę, aby punkt podany przez BradB zasługuje na -1. Może to trudne do udowodnienia, ale przeglądarka, która musi uporządkować i naprawić wewnątrz bałaganu HTML, może zająć nieco więcej niż dobrze sformatowaną prawidłową stronę HTML bez błędów. Dlaczego nie podasz odpowiedzi na to pytanie, pokazując nam dobry przykład nadmiernej strony z powodu nadużycia podczas sprawdzania poprawności HTML. Nie mogę wymyślić, w jaki sposób poprawna strona HTML może być tak przepełniona w porównaniu do tej samej strony z nieprawidłowym kodem HTML.
Marco Demaio,
1

nie ma wady posiadania prawidłowego HTML. istnieje powód, dla którego istnieje specyfikacja i dlaczego włożono wiele wysiłku w specyfikację, aby określić, jak rzeczy powinny działać.

w zasadzie wszystko, co zyskujesz, to spełnić specyfikacje. co z kolei oznacza, że ​​programy napisane w celu odczytu html (przeglądarki, boty) nie mogą Cię winić za niespełnienie specyfikacji, jeśli coś pójdzie nie tak. a niektóre z tych programów dają dodatkowe punkty (wyższy ranking w wyszukiwarkach, jeśli bot zgłasza „spełnia specyfikację”). jeśli spełnisz specyfikację, zaskoczy Cię znacznie mniej, jeśli niektóre przeglądarki nie wyświetlają uszkodzonego HTML-a tak, jak myślisz.

więc spełnienie specyfikacji i napisanie prawidłowego kodu HTML jest dla ciebie dobre, bez żadnych wad.

akira
źródło
Hum, w których wyszukiwarkach osiągasz wyższe pozycje, jeśli spełniasz specyfikację?
2
Wadą byłby dodatkowy czas programowania poświęcony na upewnienie się, że cały kod spełnia specyfikację. Chociaż koszt ten jest ogólnie minimalny, należy go traktować jako wadę.
chatche
@kinopiko: Jeśli są, to nie jest to żaden z głównych (Google, Yahoo, Bing, Ask). Posiadanie kompletnego bałaganu kodu, którego nawet doświadczony (ludzki) twórca stron internetowych nie jest w stanie odczytać, prawdopodobnie Ci przeszkodzi, ale użycie niektórych „nielegalnych” atrybutów ma absolutnie zerowy wpływ na rankingi.
DisgruntledGoat
To jest problem z terminologią sprawdzania poprawności. Jesteś albo ważny, albo nie. Nie ma stopni. Zepsuty HTML (np. Niezamknięte tagi, źle umieszczone / brakujące tagi strukturalne itp.) Jest nieprawidłowy i szkodzi SEO, ale większość ludzi nie mówi o tym, mówiąc „walidacja”. Nowicjusz może chcieć skorzystać z walidatora, aby upewnić się, że nie popełnił żadnego z tych błędów nowicjusza, ale profesjonalny programista nie musi tego robić, ponieważ jego kod jest już „wystarczająco ważny”, aby można powiedzieć o SEO.
Lèse majesté
1

Niektóre błędy sprawdzania poprawności HTML mogą powodować nieoczywiste problemy z układem (np. Niepoprawnie zagnieżdżone / niezamknięte tagi), błędy JavaScript (np. Użycie idwięcej niż raz) i problemy dla niektórych użytkowników (np. Nie zawierające znaczącego lub pustego altatrybutu na obrazach).

Jeśli wszystkie nasze strony się sprawdzą, jest to miły automatyczny sprawdzian, który możesz zrobić, aby wykluczyć źródła błędów. Jeśli pozostawisz kilka błędów sprawdzania poprawności, ponieważ wiesz, że nie powodują one żadnych szkód, czek nie jest już zautomatyzowany: musisz spojrzeć na każdy błąd i pamiętać, że jest w porządku. Osobiście wolę, gdy komputery zmniejszają ilość pracy, którą muszę wykonać, niż ją zwiększać.

Paul D. Waite
źródło
1

Jedną z kwestii, o których nikt nie wspomniał, są przyszłe zmiany przeglądarki. Chociaż wszystkie dzisiejsze przeglądarki stosunkowo dobrze radzą sobie z nieprawidłowymi znacznikami, nie zawsze tak jest.

Twórcy przeglądarek będą w przyszłości dbać o to, by ich przeglądarki działały zgodnie ze standardami HTML / XHTML, dlatego też twórcy stron internetowych powinni to robić. Tylko dlatego, że określony fragment nieprawidłowych znaczników działa teraz, nie gwarantuje, że będzie działać w przyszłych przeglądarkach.

Loftx
źródło
Muszę powiedzieć, że zastanawiam się, czy to prawda.
2
Tak, nie widzę, aby żadna przeglądarka kiedykolwiek rezygnowała z obsługi <font>tagu lub jego podobnej postaci.
DisgruntledGoat
Nie rozumiem, na czym polega problem - obsługa przestarzałych lub nieprawidłowych znaczników może ulec zmianie w przyszłości. Pomijając niedoskonałą implementację (X) HTML w większości przeglądarek, na pewno będziesz bezpieczniej trzymać się poprawnych znaczników. Prawidłowe znaczniki nie wiążą się z żadnymi kosztami, poza po prostu wiedzą, co robisz.
CJM,
1

Ważność pomaga uniknąć niezgodności i pomaga w utrzymywaniu kodu. Przeglądarki odzyskują po błędach znaczników, ale czasami w bardzo nieintuicyjny sposób.


  • Oparte na DTD (HTML4, XHTML1 @ W3C) - może nie być tego warte. DTD jest prymitywne i np. Nie może sprawdzić poprawności większości atrybutów. W większości przypadków trudno będzie zrozumieć błędy dotyczące elementów i zagnieżdżania.

  • Walidator HTML5 - Tak . Zdecydowanie. HTML5 jest bardziej pragmatyczny i dopuszcza pewne nieszkodliwe konstrukcje, które kiedyś były błędami. Walidator OTOH Henri jest znacznie dokładniejszy i lepiej odkrywa prawdziwe problemy.


Ważność kodu generowanego przez JS może mieć znaczenie, ponieważ przeglądarki działają w DOM, niezależnie od tego, jak został stworzony. Jeśli używasz document.write(), musisz nawet zadbać o poprawną składnię (przechodzi przez ten sam parser co źródło strony).

Kornel
źródło
0

Google i Bing nie używają, nie będą i nigdy nie będą używać walidacji CSS ani HTML jako czynnika rankingowego.

Większość stron ma dziesiątki do setek błędów i nie musisz się o nie martwić, ponieważ wszystkie wyszukiwarki dbają o to, jak strona się wyświetla. Po prostu upewnij się, że Twoja strona wyświetla się poprawnie we wszystkich głównych przeglądarkach i Google Fetch .

Simon Hayter
źródło