. Cette méthode d'écriture est également ce qu'on appelle la méthode de fermeture automatique, qui est tout à fait légale en XML."/> . Cette méthode d'écriture est également ce qu'on appelle la méthode de fermeture automatique, qui est tout à fait légale en XML.">
Maison >interface Web >tutoriel CSS >Analyse des inconvénients de la méthode d'écriture à fermeture automatique des balises XHTML_Experience Exchange
Si vous êtes familier avec le développement lié à XML, vous êtes peut-être habitué à cette façon d'écrire. En pensant que tout élément XML qui ne contient pas de nœuds enfants peut être écrit de cette manière, les balises sans contenu en XHTML peuvent également être écrites. Par ici. Bien sûr, XHTML permet théoriquement d'écrire n'importe quelle balise avec une méthode de fermeture automatique. Cependant, la compatibilité des navigateurs a entraîné un nouveau problème, c'est-à-dire qu'IE ne peut pas reconnaître correctement la méthode d'écriture à fermeture automatique de certaines balises.
Veuillez essayer de saisir le code XHTML suivant et de le parcourir dans IE : <strong><font face="新宋体" size="3"><p>hello <script type="text/javascript" /> world</p></font></strong>
, vous constaterez que vous ne pouvez voir que le bonjour au recto mais pas le monde à l'arrière. C'est assez inexplicable. De nombreuses personnes ont peut-être rencontré ce problème et y ont passé plusieurs heures, mais n'ont toujours pas trouvé d'explication raisonnable.
L'explication vient d'un autre morceau de code similaire : <strong><font face="新宋体" size="3"><p>hello <textarea /> world</p></font></strong>
Pouvez-vous voir l'effet d'affichage dans IE et obtenir une explication raisonnable ? Nous pouvons voir que le bonjour au premier plan est affiché normalement, tandis que le monde à l'arrière est affiché dans la zone de texte. Cela prouve qu'IE ne reconnaît pas correctement que la balise textarea s'est fermée. Au lieu de cela, il traite le contenu suivant comme un. zone de texte lorsqu'elle n'est pas fermée avec le contenu interne.
À ce stade, nous comprenons pourquoi le code précédent ne peut pas voir le monde derrière lui, car il est reconnu comme faisant partie du script. Cela montre que lorsque nous utilisons XHTML, nous ne pouvons pas utiliser l'écriture à fermeture automatique aussi librement que XML. Seules quelques balises qui n'ont pas besoin d'être fermées peuvent être écrites en fermeture automatique. D'autres balises sont mieux utilisées par paires, même si elles le font. n'ont aucun contenu. méthode d'écriture fermée.
Enfin, je dois rappeler à tout le monde qu'en fait, IE n'est pas le seul à avoir des analyseurs faibles. Dans de nombreux endroits, vous pouvez rencontrer des problèmes causés par des analyseurs lâches. Par conséquent, lors de l'écriture de XHTML, nous devons encore tenir compte d'un certain héritage. à partir de l'ancienne habitude HTML, vous ne pouvez pas l'écrire avec désinvolture comme du vrai XML parce que vous pensez qu'il répond aux normes. Vous n'y croyez pas ? Alors essayez-en un autre : <strong><font face="新宋体" size="3"><p>hello <br></br> world</p></font></strong>
, faites attention à l'effet d'affichage dans IE et Opera.
Mise à jour : Certains lecteurs pensent que les exemples que j'ai donnés ne sont pas conformes à la spécification XHTML, veuillez donc lire d'abord la spécification XHTML . La traduction chinoise de la section Éléments vides est la suivante : "Les éléments vides doivent soit avoir une balise de fermeture, soit se terminer par />, comme
ou < ;hr> . Veuillez vous référer à la Norme de compatibilité HTML pour plus d'informations sur la compatibilité ascendante avec les navigateurs HTML4, qui est également donnée dans la spécification. montrent que la méthode d'écriture de
est conforme à la spécification XHTML, mais n'est pas compatible avec la norme HTML4. Alors, XHTML est-il compatible avec HTML4 ? Regardons la section Problèmes de compatibilité. La traduction chinoise est la suivante : « Bien qu'il ne soit pas nécessaire que les documents XHTML1.0 soient compatibles avec les navigateurs existants, en pratique, ce n'est pas difficile à faire. "Par conséquent, XHTML ne stipule pas que les documents doivent être rétrocompatibles. Les exemples que j'ai donnés sont tous des fragments de documents XHTML légaux, et ils peuvent tous passer le Service de validation de balisage du W3C.
Mise à jour à nouveau : En fait, le but de la rédaction de cet article n'est pas de souligner que se conformer à la spécification XHTML suffit, ni de souligner que se conformer à XHTML et être compatible avec HTML4 suffit , mais cette plus grande compatibilité devrait être considérée comme une situation. Par exemple, votre CMS permet aux utilisateurs de soumettre du code HTML, et le code HTML soumis est formaté en XHTML via SgmlReader ou d'autres méthodes, et d'autres traitements XML peuvent également être effectués. À ce stade, il est possible de convertir le fichier