5568 sujets

Sémantique web et HTML

Bonjour à tous.

J'intègre actuellement un site comportant des framesets.
Je constate des comportements différents et très ennuyeux sur Firefox, I55, IE6 et IE7beta. Je m'explique :

Ma frame à un scroll automatique et la page, dans cette frame, suit le <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">.
Si je mets simplement, dans cette page, une <DIV> avec un border j'observe que :
IE 5.5 décale la <DIV> (il tient compte de l'espace réservé à la barre de scrolling)
IE6, IE7 et Firefox ne décale pas la <DIV> MAIS la barre de scrolling CHEVAUCHE la <DIV> sous IE lorsque celle-ci s'affiche, tandis que Firefox DÉCALE la <DIV> au moment de l'affichage de la barre.

Bref, c'est un peu difficile à gérer tout cela pour une simple frame (à mort les frames !... Sauf quand c 'est le client l'éxige)
Auriez-vous une solution à ce problème ?

J'ai constaté que lorsque j'enlève "http://www.w3.org/TR/html4/loose.dtd" toutes les versions d'IE observent le même comportement, celui d'IE5.5
Est-ce grave de faire, et surtout est-ce que cela à un sens ? (le site doit être conforme HTML 4.01 Transitional et passer le validateur)

Par avance merci.
Bonjour,

En supprimant l'url de la DTD, la validité n'est pas remise en cause. Mais les navigateurs basculent en mode de rendu "quirks" : chacun reproduit les comportements compatibles avec ses anciennes versions, et fait preuve d'une plus grande tolérance sur les erreurs syntaxiques. IE 6.0 va par exemple appliquer le box model Microsoft et non le box model CSS2, etc.

Ce mode de compatibilité n'est pas destiné à résoudre les problèmes de rendu de nouveaux sites, mais à permettre l'affichage correct des pages conçues pour les versions anciennes et non conformes de ces navigateurs. En outre, il n'est,par définition, pas normalisé et ses résultats diffèrent donc d'un navigateur à l'autre.

C'est donc, en règle général, à éviter.

Avant d'adopter cette solution, il serait préférable de s'assurer qu'une intervention plus spécifique, jouant uniquement pour IE à l'aide de commentaires conditionnels par exemple, ne permettrait pas de résoudre le problème plus proprement.

A défaut de montrer le projet réel, peut-être peux-tu mettre en ligne une page test reproduisant le problème ?
Modifié par Laurent Denis (01 Dec 2005 - 12:51)
Merci de cette réponse très claire.

J'ai envisagé la solution des commentaires conditionnels... Malheureusement il ne résoud pas le problème.
En effet, dans mon cas j'ai une <DIV> (conteneur) margée en horizontal de 10 pixels. Lorsque IE6 affiche la barre de scrolling vertical, celle-ci chevauche le contenu sans le décalé. Le résultat : l'apparition d'un barre horizontale !
Je m'étonne vraiment de ce comportement...

J'ai fais une démo rapide accessible sur : http://vinzo_v.club.fr/alsa/index.html
(C'est du rapide)