2010-11-02 7 views
5

In che modo i browser comprendono l'HTML?Qual è il meccanismo interno utilizzato dai browser per elaborare/comprendere l'HTML?

Qual è l'elaborazione effettiva che avviene internamente in modo che il browser renda l'HTML nel modo visualizzabile corretto?

+1

davvero complessa analisi, credo :) –

+2

discussione è troppo ampia immagino;) –

+0

Sì, nessuno saprebbe la vera risposta a questo. È come chiedere "In che modo Google classifica i siti web nei risultati di ricerca?" Abbiamo teorie, ma nessuna risposta definitiva. – RPM1984

risposta

11

Essa dipende dalla particolare browser, ma la procedura generale più o meno così:

  1. Leggi il codice HTML e analizzare in un albero DOM.
  2. carico collegato risorse (fogli di stile, script, immagini, media)
  3. calcolare il layout di pagina (posizioni, dimensioni, colori, font, ecc)
  4. il rendering della pagina

nei browser moderni, queste operazioni funzionano in parte in parallelo, rendendo le cose molto più complicate di quanto sembri.

Se vuoi conoscere maggiori dettagli, puoi guardare il codice sorgente - almeno Firefox (e altri browser basati su Gecko) e WebKit (la base di Google Chrome e Safari) sono Open Source.

+0

Il browser ha un parser Html integrato? –

+1

@Multiplexer - ovviamente lo farà .... – Paddy

+0

Ciò significa che tutti i browser avranno i propri parser per analizzare l'HTML. È vero ? Ecco perché il rendering delle pagine HTML è poco diverso tra i browser. –

2

Questa è una domanda più ampia di quella che appare quando è stata chiesta per la prima volta.

Molto dietro le quinte. L'HTML viene analizzato, gli script si trovano, le risorse vengono caricate, alcune di queste devono essere analizzate. I fogli di stile si aggiungono al divertimento. Gli script possono creare più lavoro riscrivendo il documento mentre viene caricato. Da qualche parte lungo la strada, devono essere affrontati gli ovvi problemi di sicurezza. E ad ogni passo, devi presumere che ogni pagina sia un potenziale tentativo di sovvertire l'intero computer e difendersi da ogni attacco che riesci a pensare, così come ogni attacco a cui non puoi pensare oggi.

E questo non è affatto vicino a un elenco completo.

Un buon esempio con il codice sorgente completo disponibile è Gecko, il motore di rendering dietro Mozilla Firefox. È ben gestito, veloce, abbastanza conforme agli standard, e sicuro come migliaia di revisori di codice e attaccanti possono farcela.

1

Non è davvero il mio campo, ma con qualsiasi linguaggio, il computer deve analizzarlo e costruirne una rappresentazione interna.

Nelle versioni di HTML precedenti alle 5, ciascun browser ha deciso come analizzare l'HTML stesso. A partire da HTML5, le specifiche HTML in realtà definiscono come analizzare HTML.

Non tutti i browser lo implementano ancora (probabilmente nessuno lo fa), ma il team di WebKit almeno ci sta lavorando, e guardando il loro lavoro, o le specifiche HTML5, potrebbe essere un buon punto di partenza se stai imparando sull'analisi di HTML.

+0

Ci sono anche le specifiche per le versioni HTML pre-5. Solo alcuni browser hanno deciso di seguirli, mentre altri no. Inoltre, le specifiche non dettano alcun particolare algoritmo o tecnologia di analisi, si limitano a definire la sintassi e il modo in cui i browser devono interpretarla. – tdammers

+0

@tdammers: avevo l'impressione che le specifiche per HTML 4 e precedenti non avessero nulla di simile al livello di dettaglio richiesto per essere considerato particolarmente utile per scrivere un parser, così efficacemente non hanno definito come analizzare l'HTML. (Non ho un'opinione su questo da solo, dato che non sono mai stato così vicino a scrivere un parser per qualcosa.) –

+0

@Paul, IMHO il problema era essenzialmente che nessun browser ha mai effettivamente seguito le specifiche per alcun rev di HTML . Ogni browser ha stranezze. E patch quelle stranezze basate sul DOCTYPE, se presente. HTML 4 si è specificato abbastanza bene. A nessuno importava Installa e utilizza un validatore HTML sul web in generale, quindi cerca di non deprimerti di quanto pochi siti passano. (Questa stessa pagina di SO ha 24 errori di parsing di SGML mentre scrivo questo secondo l'estensione HTML Validator FF.) – RBerteig

Problemi correlati