Convalida HTML: ne vale la pena?


52

Quali sono i vantaggi e gli svantaggi (se presenti) di assicurarsi che tutte le pagine vengano convalidate rispetto ad avere un HTML non valido che funziona comunque su tutti i principali browser?

Inoltre, avere HTML valido dopo l'esecuzione di Javascript è altrettanto importante?


5
Questo non risponde alla tua domanda ma ... posizionando un doctype sulla tua pagina metterai il browser in modalità standard invece che in modalità stranezze. Cerca la modalità stranezze per capire cosa intendo.
Evan Plaice,

1
@Evan Plaice - Non qualsiasi DOCTYPE però. Alcuni DOCTYPES in realtà attivano stranezze o modalità quasi standard. Le specifiche HTML5 lo spiegano in modo più dettagliato.
luiscubal,

1
@luiscubal È una novità di HTML 5 perché da en.wikipedia.org/wiki/Quirks_mode , indica "... se è presente un DOCTYPE completo, il browser utilizzerà la modalità standard e se è assente il browser utilizzerà la modalità quirks . ".
Evan Plaice,

@Evan Plaice Non sono sicuro delle versioni HTML precedenti, ma l'HTML5 specifica nello specifico cosa fare con i DOCTYPES antichi: vedi whatwg.org/specs/web-apps/current-work/multipage/…
luiscubal

1
@Evan Plaice In altre parole, "DTD HTML 2.0 Livello 1" attiva la modalità stranezze.
luiscubal,

Risposte:


42

Penso che valga la pena farlo , ma non dovresti mai essere schiavo della convalida: è un gioco da pazzi.

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

  1. Convalida il tuo HTML. Scopri cosa significa avere un markup HTML valido. Comprendi gli strumenti. Più informazioni è sempre meglio di meno informazioni. Perché volare alla cieca?

  2. A nessuno importa se il tuo HTML è valido. Tranne te. Se lo desidera. Non pensare per un secondo che la produzione di HTML perfettamente valido sia più importante della gestione del tuo sito Web, della fornitura di funzionalità che soddisfano i tuoi utenti o del lavoro svolto.


3
Devo secondo questo. Ho visto molti problemi con le librerie javascript che possono essere biasimati su HTML non valido. Più moduli nidificati e tag chiusi illegalmente sono i principali autori di reato. Come dice Jeff, non essere uno schiavo, ma non lamentarti quando jQuery non funziona perché la tua pagina non è un codice HTML valido (XHTML, HTML 5 o qualunque cosa tu scelga come tipo di documento).
Gareth Farrington,

@Jeff Atwood: non posso essere più d'accordo quando dici "A nessuno importa se il tuo HTML è valido. Tranne te." Triste ma vero, ai clienti non importa davvero.
Marco Demaio,

@MarcoDemaio Perché è triste? Come cliente e utente finale, sono più preoccupato se il sito funziona o meno su tutti i browser (la maggior parte dei quali non sono conformi agli standard all'inizio) piuttosto che se convalida o meno. L'HTML valido non ha davvero importanza. Google, Facebook, Twitter, questo sito, ecc. Nessun sito pertinente ha un markup valido. Perché? Perché un codice HTML valido non fa altro che gonfiare la pagina e aumentare i costi della larghezza di banda.
NullUserException il

Lo stesso vale per il markup perfettamente rientrato. Questo è ancora più inutile, è uno spreco del 100% di larghezza di banda e non ha alcun uso pratico.
NullUserException il

@NullUserException: penso che sia triste perché ho scoperto che i siti Web convalidati di solito rendono molto meglio su tutti i browser. Vedi il mio commento alla risposta di Alan: webmasters.stackexchange.com/a/373/1429 La convalida di un sito Web salvato da me e mi fa risparmiare un sacco di tempo. A proposito del markup rientrato perfetto non ho mai sentito parlare di specifiche al riguardo. Potrei rientrare di 3 spazi e potresti rientrare di uno.
Marco Demaio,

32

Considero un codice HTML valido un obiettivo utile, ma non lo vedo come il principio fondamentale della creazione di buoni siti Web.

Il trucco è che il tuo markup potrebbe essere perfettamente valido, ma potrebbe non essere semantico, ad esempio usando le tabelle per il layout o la navigazione. C'è una differenza tra codice valido e codice semantico.

In un'altra nota, se usi pubblicità o script esterni, possono inserire il loro markup che ha la possibilità di rovinare davvero il tuo.


22

Penso che ne valga la pena, dato che ho cercato molti errori di markup ed errori logici cercando la convalida. È una di quelle cose "necessarie ma non sufficienti". Un markup valido, come il codice che compila (o esegue il checkout tramite JSlint) privo di errori, avvisi e suggerimenti, è un buon primo passo per farlo correttamente.


+1 sono totalmente d'accordo su questo. La convalida delle pagine consente di risparmiare un sacco di tempo in esecuzione dopo che JS e i bug di come vengono contestati che sembrano così misteriosi e sono dovuti solo a un tag HTML consumato o non chiuso. Inoltre con strumenti come il componente aggiuntivo FF Html Validator [ addons.mozilla.org/en-US/firefox/addon/html-validator/] è molto semplice convalidare tutte le pagine localmente.
Marco Demaio,

9

Il grande vantaggio dell'HTML valido è che la tua pagina è quindi più accessibile a cose diverse dai "principali browser". Tutti i "principali browser" hanno infinite soluzioni alternative per gestire tutta la spazzatura non valida che popola il WWW. Tuttavia, attenersi a un codice HTML valido aiuta, ad esempio, se qualcuno utilizza un browser per non vedenti o accede alle tue pagine offline, ecc.


8

La convalida di per sé non è così critica, poiché pochi browser sono conformi al 100% e le specifiche non sono chiare al 100% su come interpretare le regole.

Tuttavia, essere HTML valido ti mette in una posizione migliore per adattare e migliorare il tuo sito. Man mano che gli standard si spostano, in genere migreranno in avanti e se il tuo nuovo sito è valido, l'aggiornamento per supportare l'ultima cosa dovrebbe essere più semplice.

In fondo, essere valido rende più facile rimanere in cima al gioco ed essere il più compatibile possibile con il pubblico più vasto.


4

L'approccio migliore è sapere quale HTML non valido è dannoso e quale HTML non valido non ha importanza.

Ad esempio, dimenticare di chiudere un <div>tag è molto negativo , perché il layout quasi sicuramente si rovinerà in uno o più browser.

Tuttavia, l'utilizzo <br>anziché <br />in XHTML non ha importanza: tutti i browser interpretano entrambi come un'interruzione di linea senza problemi. L'uso targetdell'attributo sui collegamenti non è valido, ma lo scenario peggiore è che il browser non apre il collegamento in una nuova finestra.


targetè valido nell'XHTML di transizione e solo i masochisti usano il rigoroso. L'omissione della barra di chiusura renderà la tua pagina XML non valida, il che probabilmente confonderà i raschiatori dello schermo. Se scegli di utilizzare XHTML, la tua pagina dovrebbe essere almeno valida XML.
Tgr

1
@Tgr: Divertente, pensavo che i masochisti preferissero la modalità non standard. Anche i doctype di transizione hanno i loro problemi (usando la modalità "quasi standard", ecc.)
DisgruntledGoat

1
Direi che Strict è essenziale: perché scegliere di correre il rischio di codice deprecato e modalità stranezze. L'uso di Strict non comporta alcun costo, a parte il fatto che ti incoraggia a conoscere meglio la tua versione di markup preferita.
CJM,

3

Quando esegui il validatore, dovrai esaminare gli errori che ti dà caso per caso. La convalida è importante? Per me, sì, è molto importante. Ma è un requisito? No.

Cose come usare lo stesso ID più volte (anziché una classe), inserendo elementi a livello di blocco all'interno di elementi a livello inline (di solito questi elementi non si adattano in questo modo neanche semanticamente), mancando gli attributi alt sulle immagini (scarsa accessibilità per i disabili ), sono tutti importanti. Cose come attributi sconosciuti sui tag NON sono importanti. Affatto. I framework Javascript come Dojo o quella terribile barra dei social media Meebo utilizzano attributi personalizzati come hook e le specifiche HTML indicano che questi sono consentiti e che qualsiasi attributo sconosciuto deve essere ignorato. Il validatore non li ignora, tuttavia, genera errori. Questi errori possono essere ignorati.

Durante la convalida, non dare per scontato che se si verificano errori, si sta facendo un errore. La semantica è di gran lunga più importante e succede che l'HTML valido sia il più delle volte il risultato naturale dell'avere una semantica corretta.


Sono d'accordo - convalida la tua pagina web, ma in alcune circostanze, puoi scegliere di ignorare gli avvisi, purché tu sappia perché sono lì
Casebash

3

Un motivo per testare il tuo sito per un codice HTML valido è che garantisce che gli spider dei motori di ricerca saranno in grado di indicizzare e determinare completamente il significato delle tue pagine. Se non possono farlo a causa di HTML non valido (su cui i principali browser possono aggirare per motivi storici), si sta potenzialmente limitando il posizionamento dei motori di ricerca.

Si è anche ipotizzato che mentre i principali motori di ricerca fanno un buon lavoro nel trattare con HTML non valido, possono anche assegnare "punti" di qualità della pagina per la validità, influenzando ulteriormente la tua capacità di classificare quanto merita il tuo contenuto.


2
Google ha dichiarato categoricamente che l'HTML non valido non ha alcun effetto sulle classifiche. Tuttavia, posso vedere il caso in cui l'HTML è così malformato che il contenuto effettivo della pagina non può essere letto dagli spider, anche se in questo caso è quasi certo che i browser inizierebbero a presentare problemi di rendering.
Disgruntled

@DisgruntledGoat Hai ragione, ecco un riferimento per questo: youtube.com/watch?v=FPBACTS-tyg
JasonBirch,

@DisgruntledGoat Ovviamente ... Google stesso è pieno di HTML non valido, e ricordo che hanno detto che a loro non importa davvero e che è una buona cosa avere HTML non valido se ciò significa tempi di caricamento più rapidi.
NullUserException il

3

Non penso davvero che importi più. Ero uno schiavo della convalida, ora raramente lo controllo. Forse mi sono stancato di assicurarmi che il mio sito fosse valido, o forse non me ne importava più perché nessun altro lo farà. Posso garantire che il 99,9% dei nostri visitatori non sa nemmeno di cosa si tratti e se ne preoccupa. Il futuro software del browser potrebbe, ma quando arriverà quel giorno, allora mi preoccuperò.


2

La convalida è utile perché può aiutarti a individuare alcuni errori difficili da rilevare come

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

o un comportamento imprevedibile del browser (ad esempio, inserire elementi di blocco in apuò talvolta rompersi in modo brutto in Firefox).


2

Un punto che nessuno ha ancora menzionato è che l'HTML non valido può causare tempi di rendering più lenti mentre il browser sta cercando di dare un senso all'HTML non standard durante la visualizzazione.


Voterei questo voto se potessi. Ho fortemente dubitare di questa ha alcun effetto osservabile; Sarei più interessato al markup valido che gonfia la pagina e richiede più tempo per il caricamento (specialmente su connessioni più lente / mobili).
NullUserException il

@NullUserExceptions: non credo che il punto sollevato da BradB meriti un -1. Forse è difficile da dimostrare, ma un browser che deve sistemare e correggere all'interno di un pasticcio HTML potrebbe richiedere un po 'più di una pagina HTML valida ben formattata senza errori. Perché non fornisci una risposta a questa domanda mostrandoci un buon esempio di una pagina troppo gonfia a causa dell'abuso della convalida HTML. Non riesco a pensare a come una pagina HTML valida possa essere così esagerata rispetto alla stessa pagina con codice HTML non valido.
Marco Demaio,

1

non ci sono svantaggi di avere un HTML valido. c'è una ragione per cui c'è una specifica in primo luogo e perché ci si sta impegnando molto per definire come dovrebbero funzionare le cose.

fondamentalmente, tutto ciò che guadagni è soddisfare le specifiche. che a sua volta significa che i programmi scritti per leggere HTML (browser, bot) non possono biasimarti per non aver rispettato le specifiche se qualcosa va storto. e alcuni di questi programmi ti danno punti extra (classifica più alta nei motori di ricerca se il bot riporta "soddisfa le specifiche"). se soddisfi le specifiche sarai sorpreso molto meno di sorpresa se alcuni browser non visualizzano il codice HTML rotto nel modo in cui pensi che dovrebbe.

quindi, per soddisfare le specifiche e scrivere HTML valido è un bene per te, senza svantaggi.


Hum, in quali motori di ricerca ottieni classifiche più alte se incontri le specifiche?

2
Lo svantaggio sarebbe il tempo di sviluppo aggiuntivo che dedichi assicurandoti che tutto il tuo codice soddisfi le specifiche. Sebbene questo costo sia generalmente minimo, dovrebbe comunque essere affrontato come uno svantaggio.
chatche,

@kinopiko: se ce ne sono, non è nessuno dei principali (Google, Yahoo, Bing, Ask). Avere un disordine completo di codice che nemmeno uno sviluppatore web (umano) esperto può leggere ti ostacolerà probabilmente, ma l'uso di alcuni attributi "illegali" non ha alcun effetto sulle classifiche.
DisgruntledGoat

Questo è il problema con la terminologia di convalida. O sei valido o non lo sei. Non ci sono gradi. L'HTML non funzionante (ad esempio tag non chiusi, tag strutturali fuori posto / mancanti, ecc.) Non è valido e danneggia la SEO, ma la maggior parte delle persone non ne parla quando dice "convalida". Un principiante potrebbe voler usare un validatore per assicurarsi di non aver commesso nessuno di quegli errori da principiante, ma uno sviluppatore professionista non ne ha bisogno poiché il loro codice è già "abbastanza valido" per così dire in termini di SEO.
Lèse majesté,

1

Alcuni errori di convalida HTML possono causare problemi di layout non ovvi (ad es. Tag erroneamente nidificati / non chiusi), bug JavaScript (ad es. Uso di idpiù di una volta) e problemi per alcuni utenti (ad es. Non includere un altattributo significativo o vuoto nelle immagini).

Se tutte le nostre pagine vengono convalidate, è un buon controllo automatico che puoi fare per escludere le fonti di errori. Se lasci alcuni errori di convalida perché sai che non stanno causando alcun danno, il tuo controllo non è più automatizzato: devi guardare ogni errore e ricordare che va bene. Personalmente, lo preferisco quando i computer riducono la quantità di lavoro che devo fare piuttosto che aumentarlo.


1

Un punto che nessuno ha menzionato sono i futuri sviluppi del browser. Sebbene tutti i browser di oggi gestiscano il markup non valido relativamente bene, potrebbe non essere sempre così.

I produttori di browser in futuro assicureranno che i loro browser funzionino secondo gli standard HTML / XHTML, quindi questo è ciò che anche gli sviluppatori web dovrebbero colpire. Solo perché un particolare bit di markup non valido ora non garantisce che funzionerà nei browser futuri.


Devo dire che mi chiedo se sia vero.

2
Sì, non riesco a vedere alcun browser che sta abbandonando il supporto per il <font>tag o il suo simile.
DisgruntledGoat

Non vedo quale sia il problema: il supporto per il markup deprecato o non valido potrebbe cambiare in futuro. Trascurando l'implementazione imperfetta dell'HTML (X) nella maggior parte dei browser, sicuramente starai sicuro con un markup valido. Non ci sono costi associati al markup valido, oltre a sapere semplicemente cosa stai facendo.
CJM,

1

La validità ti aiuta a evitare incompatibilità e aiuta a mantenere il codice mantenibile. I browser recuperano da errori di markup, ma a volte in modi molto poco intuitivi.


  • Basato su DTD (HTML4, XHTML1 @ W3C) - Potrebbe non valerne la pena. DTD è primitivo e, ad esempio, non può verificare la validità della maggior parte degli attributi. Per lo più ti sarà difficile comprendere errori su entità e nidificazione.

  • Convalida HTML5 - . Decisamente. HTML5 è più pragmatico e consente alcuni costrutti innocui che erano errori. Il validatore di OTOH Henri è molto più approfondito e migliore nello scoprire problemi reali.


La validità del codice generato da JS potrebbe essere importante, poiché i browser funzionano su DOM, indipendentemente da come è stato creato. Se lo usi document.write(), devi anche fare attenzione a ottenere la sintassi corretta (passa attraverso lo stesso parser dell'origine della pagina).



0

Google e Bing non hanno, non hanno e non useranno mai la convalida CSS o HTML come fattore di classificazione.

La maggior parte dei siti Web ha dozzine o centinaia di errori e non devi preoccuparti perché tutti i motori di ricerca si preoccupano di come viene visualizzata la pagina. Assicurati solo che il tuo sito Web venga visualizzato correttamente in tutti i principali browser e Google Fetch .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.