2010-03-07 7 views
1

Ma dernière entreprise, qui a utilisé 4,01 DOCTYPE exclusivement, ont décidé d'ajouter de nouvelles fonctionnalités basées sur l'utilisation de balises propriétaires sous forme debalises HTML « propriétaire » dans HTML 4.01

<pp:foo attrOne="something" attrTwo="something else"/> 

à certaines fins dans leur. pages aspx. Au début, ils ont cassé beaucoup de Javascript jusqu'à ce que je comprenne que lorsque ces balises propriétaires étaient à fermeture automatique, ils ont causé (dans certains cas) le reste du document à interpréter comme des enfants de cet élément. (Je dois ajouter que je ne me sentais pas à l'aise avec les balises propriétaires à 4,01 dans tous les cas, mais cette décision a été prise au-dessus de mon niveau de rémunération.)

Sur la base de mon intuition, je suggère qu'ils changent cela

<pp:foo attrOne="something" attrTwo="something else"></pp:foo> 

et toutes les manipulations cassées Javascript DOM sont revenues à nouveau. Je ne trouvais nulle part de référence à ce genre de comportement, et réparer ça n'était qu'une conjecture de ma part. Ma question est la suivante: est-ce que quelqu'un sait précisément pourquoi cela devrait être?

Répondre

3

Vous avez rencontré ce problème car HTML 4.01 ne prend pas en charge les balises à fermeture automatique comme dans votre premier exemple.

+1

Voir http://www.w3.org/TR/html4/intro/sgmltut.html 3.2.1 Éléments – Pindatjuh

+1

Merci à tous. Rétrospectivement, cela semble évident, mais parfois de l'intérieur nous ne pouvons pas voir la forêt pour les arbres. – Robusto

3

Le W3C html validator donne un peu d'une explication:

La séquence < FOO /> peut être interprété dans au moins deux façons différentes , selon le DOCTYPE du document .
Pour HTML 4.01 Strict, le '/' termine l'étiquette < FOO (avec un implicite '>').
Cependant, étant donné que de nombreux navigateurs ne l'interprètent pas cette façon, même en présence d'un HTML 4.01 DOCTYPE strict, il est préférable d'éviter complètement dans les documents HTML purs et réserve son utilisation uniquement pour les écrit en XHTML.