Question

Étant donné un grand projet hérité utilisant ASP.NET, javascript, css, etc., je me demandais si je devais changer le DOCTYPE des pages Web, du HTML 4.0 Transitional au XHTML 1.0 Transitional (ou l’inverse). en aucun cas pourrait casser les fonctions javascript des pages Web.

Il existe de nombreux articles et discussions sur la manière dont différents DOCTYPES affectent le rendu (css) des pages, mais je n'arrive pas à trouver quoi que ce soit de semblable au sujet de la rupture de code.

Je cherche des liens vers des articles sur des points à surveiller en général afin de mieux repérer les problèmes potentiels dans le code existant et d'éviter de créer des problèmes lors de l'écriture de nouveau code.

Était-ce utile?

La solution

La modification de DOCTYPE annulera toute fonction javascript en fonction de la manière dont ces fonctions sont conçues de manière défensive:)

Par exemple, lorsque le document est rendu en mode quirks , document.body (BODY) devient ce que l'on appelle un "élément racine". lorsqu'il est rendu en mode standard, cet élément racine est généralement un document.documentElement (HTML). C'est une distinction assez substantielle. Si un script qui détermine la taille de l'écran du navigateur interroge toujours les propriétés clientWidth / clientHeight hors de document.documentElement , il signalera évidemment des résultats incorrects en mode quirks. (depuis, IIRC, document.documentElement.clientWidth / clientHeight représenterait les dimensions de l'élément HTML plutôt que celles de l'écran).

La plupart des bibliothèques JS précisent généralement explicitement si quirksmode est pris en charge (nous, Prototype.js, par exemple, ne prenons pas en charge le mode quirks).

En parlant de HTML vs XHTML , pour que le navigateur rende le document au format XHTML, vous devez tout d'abord le servir avec le type de contenu "Content-type" approprié. en-tête (c'est-à-dire application / xhtml + xml). Si vous ne changez que le type de document en XHTML, mais que vous serviez toujours le document comme "text / html", la plupart des navigateurs que je connais l’analyseront (et le rendront) sous forme de document HTML .

Notez qu’à ce jour, IE ne comprend pas "réel". Le contenu XHTML, c’est pourquoi il est recommandé de fournir des documents au format text / html (avec le type HTML4.01) (sauf si IE ne figure pas parmi les navigateurs pris en charge, bien sûr).

En ce qui concerne les particularités des DOM dans "real" Documents XHTML, j'ai entendu dire que certaines choses telles que document.write "ne fonctionnent pas". et que l'accès aux attributs de nœud doit toujours être effectué via getAttribute / setAttribute (plutôt que via de simples accessors de propriétés). IIRC, il existe également des problèmes avec innerHTML .

Le manque d'informations sur les DOM dans "réel" Les documents XHTML sont probablement dus à leur impraticabilité dans les documents / applications pour le Web général (c’est-à-dire le manque de prise en charge par IE).

Autres conseils

Si vous utilisez la DTD:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

alors votre site est en mode quirks dans IE et en mode presque standard dans les navigateurs modernes, et parce que le dtd transitoire 1.0 force la page à être en mode standard, il y aura des problèmes de mise en page et des problèmes potentiels dans Javascript (en particulier). IE) car il existe des différences significatives entre la façon dont le DOM est rendu dans les bizarreries par rapport aux standards.

Toutefois, si la DTD HTML 4.01 contient l'identificateur système:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/html4/loose.dtd">

Il devrait déjà être en mode standard. Vous pouvez vérifier en interrogeant "document.compatMode" sur votre site. "CSS1Compat" est indiqué dans les normes, sinon "BackCompat" en mode quirks.

Je suppose que vous allez servir un contenu de type text / html avec XHTML 1.0 Transitional.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top