2010-07-12 3 views
1

Je suis en train de lire un document à propos de HTML5. Quelques lignes en bas de l'endroit où j'ai lié, un exemple d'arborescence DOM est affiché pour l'exemple de code HTML donné. Pourquoi n'y a-t-il pas de nœud de texte directement avant l'élément <head>? Pourquoi n'y a-t-il aucun noeud de texte entre les noeuds DOCTYPE et <html>? Erreur ou fonctionnalité?Document de spécification: DOM texte Noeuds

Répondre

2

Feature. La principale raison est que, étant donné le balisage

<!DOCTYPE html> 
<html> 
<head> 
    <title>Sample page</title> 
..., 

certaines personnes attendent

document.documentElement.firstChild 

retourner l'élément head. Cependant, si le noeud de texte était inclus, c'est le noeud qui serait renvoyé.

(Notez aussi que la nouvelle ligne entre </body> et </html> se termine dans l'élément body.)

+0

J'aime beaucoup cette réponse, parce que vous avez également remarqué le CR supplémentaire après . Je l'ai fait aussi, mais je ne savais pas quoi penser à ce moment-là. Donc, il pourrait absolument être une décision (sans papiers?) Faite pour des raisons héritées. En même temps, le groupe est prêt à apporter d'autres changements à la norme en rendant les choses moins confuses. Très étrange. Je vais laisser la question reposer un peu, juste pour que je puisse comprendre exactement ce qui se passe. Si vous êtes intéressé, je l'ai également demandé des éclaircissements à http://www.w3.org/Bugs/Public/show_bug.cgi?id=10136 – TNi

+1

L'éditeur est prêt à changer la spécification pour rendre les choses moins de confusion, mais uniquement si les pages Web ne reposent pas sur le comportement particulier et si les fournisseurs de navigateurs sont disposés à implémenter le changement. Ce n'était pas le cas ici. – Ms2ger

0

Le nœud de texte avant la <head> est probablement une omission. Vous ne disposez pas d'un nœud de texte avant l'élément racine car la plupart des analyseurs XML/HTML ne peuvent pas traiter les éléments situés en dehors du nœud racine. Ils les ignorent donc en silence. La même chose se produit si vous ajoutez un commentaire ou une instruction de traitement.

+0

Je n'ai pas un exemple précis, mais j'imagine certains environnements sont assez « intelligents » à filtrer le texte "non pertinent", c'est-à-dire un espace blanc non significatif. Si un élément de texte ne contient que des espaces blancs insignifiants, il peut être légitime qu'une implémentation le supprime. En tant que développeur, je suis généralement reconnaissant quand cela arrive. –

+1

De quelle manière pourrait le « CR » entre « » et « » être plus ou moins importante que entre « » et « »? –

+1

Je suis d'accord avec Aaron. Alors que le CR entre et est plutôt inutile pour moi, il est pas moins important que d'autres CR de. J'aime que mes environnements soient assez intelligents pour obéir exactement à la norme, si possible. En fait, je me souviens d'être très ennuyé par les différences de nœuds de texte entre IE et FF. Cela dit, j'ai posté un commentaire sur cette page à http://www.w3.org/Bugs/Public/show_bug.cgi?id=10136 pour clarification. Merci pour les réponses. – TNi

Questions connexes