2010-11-02 8 views
5

Comment les navigateurs comprennent-ils le langage HTML?Quel est le mécanisme interne utilisé par les navigateurs pour traiter/comprendre le langage HTML?

Quel est le traitement réel effectué en interne pour que le navigateur affiche le code HTML de manière appropriée?

+1

analyse syntaxique vraiment complexe, je pense :) –

+2

sujet est trop large, je suppose;) –

+0

Oui, personne ne connaîtrait la vraie réponse à cette question. C'est comme demander "Comment Google classe-t-il les sites Web dans les résultats de recherche?" Nous avons des théories, mais pas de réponses concluantes. – RPM1984

Répondre

11

Cela dépend du navigateur particulier, mais la procédure générale ressemble à ceci:

  1. Lire le HTML et l'analyse syntaxique dans un arbre DOM.
  2. charge des ressources liées (feuilles de style, scripts, images, médias)
  3. Calculer la mise en page (positions, tailles, couleurs, polices, etc.)
  4. Render la page

Dans les navigateurs modernes, ces opérations se déroulent en partie parallèlement, ce qui rend les choses beaucoup plus compliquées qu'elles ne le semblent. Si vous voulez en savoir plus de détails, vous pouvez regarder le code source - au moins Firefox (et d'autres navigateurs basés sur Gecko) et WebKit (la base de Google Chrome et Safari) sont Open Source.

+0

Le navigateur aura-t-il intégré l'analyseur Html? –

+1

@Multiplexer - bien sûr, ça va .... – Paddy

+0

Cela signifie que tous les navigateurs auront leurs propres analyseurs syntaxiques pour analyser HTML. Est-ce vrai ? C'est pourquoi le rendu des pages HTML est peu différent entre les navigateurs. –

2

Il s'agit d'une question plus vaste qu'elle n'apparaît au premier abord.

Beaucoup de choses se passent dans les coulisses. Le code HTML est analysé, les scripts sont localisés, les ressources sont chargées, certaines d'entre elles doivent être analysées. Les feuilles de style ajoutent à l'amusement. Les scripts peuvent créer plus de travail en réécrivant le document lorsqu'il est chargé. Quelque part sur le chemin, les préoccupations de sécurité évidentes doivent être abordées. Et à chaque étape, vous devez supposer que chaque page est une tentative potentielle de subvertir l'ensemble de l'ordinateur et de se défendre contre toutes les attaques auxquelles vous pouvez penser ainsi que toutes les attaques auxquelles vous ne pouvez pas penser aujourd'hui.

Et c'est loin d'être une liste exhaustive.

Un bon exemple avec le code source complet disponible est Gecko, le moteur de rendu derrière Mozilla Firefox. Il est bien entretenu, rapide, tout à fait conforme aux normes, et à peu près aussi sécurisé que des milliers de réviseurs de code et d'attaquants peuvent le faire.

1

Ce n'est vraiment pas mon domaine, mais avec n'importe quelle langue, l'ordinateur doit l'analyser et en construire une représentation interne.

Dans les versions HTML antérieures à 5, chaque navigateur décidait comment analyser le code HTML lui-même. À partir de HTML5, la spécification HTML définit en fait comment analyser le code HTML.

Tous les navigateurs ne l'implémentent pas encore (peut-être aucun), mais l'équipe WebKit travaille au moins dessus, et regarder leur travail, ou la spécification HTML5, pourrait être un bon point de départ si vous apprenez à propos de l'analyse HTML.

+0

Il existe également des spécifications pour les versions HTML pré-5. Seuls quelques navigateurs ont décidé de les suivre, alors que d'autres ne l'ont pas fait. En outre, la spécification ne dicte aucun algorithme ou technologie d'analyse particulière, elle définit simplement la syntaxe et la manière dont les navigateurs doivent l'interpréter. – tdammers

+0

@tdammers: J'avais l'impression que les spécifications pour HTML 4 et les versions antérieures n'avaient rien à voir avec le niveau de détail requis pour écrire un analyseur, donc ils ne définissaient pas comment analyser le langage HTML. (Je n'ai pas d'opinion à ce sujet moi-même, car je ne suis jamais arrivé à écrire un analyseur pour quoi que ce soit.) –

+0

@Paul, IMHO le problème était essentiellement qu'aucun navigateur n'a jamais suivi la spécification pour tout rev de HTML . Chaque navigateur a des bizarreries. Et correctifs ces quirks basés sur le DOCTYPE, le cas échéant. HTML 4 s'est assez bien défini. Personne ne s'en souciait. Installez et utilisez un validateur HTML sur le Web en général, puis essayez de ne pas être dépressif sur le nombre de sites qui passent. (Cette même page à SO a 24 erreurs d'analyse SGML car je tape ceci en fonction de l'extension HTML Validator FF.) – RBerteig