Bonsoir,

Tout d'abord , j'ai bien lu http://blog.alsacreations.com/2005/08/01/183-choix-dune-dtd-le-doctype-switching-nest-pas-pour-nous[/url], article auquel je voudrais bien adhérer pour mon site en cours, cad ne pas mettre le Doctype en fonction du coed mais l'inverse.

Seulement voilà, mon client veut absolument dans sa homepage, un cadre dans lequel défilent des news, avec liens etc..., le tout alimenté par des fichiers externes. PAr ailleurs, je suis infographiste et même si je fais un peu de code (AS, JS, PHP), je ne suis pas un réel programmeur, et il n'est pas prévu dans le budget du client.
J'aurais pu le faire en Flash, mais outre le problème de l'encodage des caractères, et la difficulté d'insérer des images par le cient,le défilement risquait d'être saccadé.
Tout çà, pour dire que j'ai fait cet affichage de news, par un petit code que j'ai trouvé sur un tutorial et adapté, en JS, et surtout l'utilisation de la balise "Marquee", au sein de deux DIV imbriquées..

Viens alors le pb des Doctype:
1/ en DOCTYPE Html 4.0 Transitionelle (Strict et Frameset également): c'est OK (défilement) sous Firefox 1.06, IE Pc 6.0.2 et Opéra 8.02, mais pas de défilement en boucle sous IE Mac (et mon client est sous IE Mac exclusivement !!!). Et sous Netscape 7, tout la page défile.

2/ en DOCTYPE Html 4.01 Transitionelle (Strict et Frameset également): OK pour IE Pc et Opéra, mais pas de défilement en boucle pour Firefox, IE Mac et même problème sous Netscape.

3/ en DOCTYPE Html 3.2: OK pour Firefox, Ie PC, IE Mac (super) mais pas bon sous Opéra et Netscape.

4/ en DOCTYPE XHTML 1.0 Transitionelle: il n'y a que sous IE Pc et Opéra que c'est OK

Donc:
- soit je mets tout le site en DOCTYPE Html 3.2
- soit je trouve un moyen, (code JS ou PHP) d'orienter, suivant le navigateur utilisé, vers le bon DOCTYPE.
Est-ce possible ? Le DOCTYPE étant déclaré avant le HEAD ou le BODY, est il possible de ne pas faire de déclaration de DOCTYPE avant la balise HTML puis de l'inscrire par du code ? A moins, qu'un code puisse rediriger vers la bonne page avec le bon DOCTYPE ?
ET y a t'il un moyen de déterminer, efficacement, le navigateur utilisé ?

PAr ailleurs, doit on mettre le même DOCTYPE sur toutes les pages d'un même site, ou peut on varier de DOCTYPE suivant les pages ?

JE sais que tout çà l'air un peu tiré par les cheveux, et vous voudrez bien m'en excuser, mais on ne fait pas toujours ce que l'on voudrait, car croyez moi, je me serais bien passé de faire un site compatible IE Mac.

Cordialement
Furet
Bonjour,

furet92 a écrit :

Donc:
- soit je mets tout le site en DOCTYPE Html 3.2


Non, puisque le code n'est pas du HTML3.2 (pas plus que du XHTML ou du HTML4.01 d'ailleurs).

furet92 a écrit :

- soit je trouve un moyen, (code JS ou PHP) d'orienter, suivant le navigateur utilisé, vers le bon DOCTYPE.
Est-ce possible ? Le DOCTYPE étant déclaré avant le HEAD ou le BODY, est il possible de ne pas faire de déclaration de DOCTYPE avant la balise HTML puis de l'inscrire par du code ?


Ce n'est pas possible. Et un Doctype se détermine uniquement en fonction du format HTML ou XHTML effectivement utilisé.
furet92 a écrit :

A moins, qu'un code puisse rediriger vers la bonne page avec le bon DOCTYPE ?
ET y a t'il un moyen de déterminer, efficacement, le navigateur utilisé ?


Il n'existe aucun moyen de déterminer efficacement le navigateur utilisé. Les scripts de négociation de contenu fiables ne se fie pas à l'identité du navigateur, mais utilisent un test de support de la fonctionnalité concernée. Ici, même si un tel test était possible, ce serait un moyen très lourd de gérer les choses, alors qu'il existe une solution immédiate (ci-dessous).

furet92 a écrit :

PAr ailleurs, doit on mettre le même DOCTYPE sur toutes les pages d'un même site, ou peut on varier de DOCTYPE suivant les pages ?


Un doctype se rapporte uniquement au format du document seul. Différentes pages peuvent avoir des doctypes différents (c'est obligatoire dans le cas d'un Frameset, par exemple). En fait, la notion de "site" n'existe tout simplement pas de ce point de vue : il n'existe que des "documents" (ou "pages", ou "ressources")

Mais surtout, la solution "normale" est très simple: le format utilisé n'étant ni du HTML ni du XHTML (<marquee>), les pages concernées ne doivent pas comporter de doctype (les autres pages du site peuvent avoir le doctype correspondant à leur format, bien-sûr)

Du coup, IE6.0, Opera, FireFox, IE5Mac, etc, seront en mode de rendu Quirks, ce qui devrait permettre le fonctionnement des news défilantes, avec peut-être quelques corrections dans le script pour refaire du bon vieux DHTML cross-browser.

Tu pourras dire à ton client que tu as réalisé des pages qui seraient au format (X)HTML X.Y s'il n'avait pas insisté pour avoir ses news à coulisses. Et qu'il suffirait de les virer et d'ajouter la DTD idoine pour évoluer vers un code standard.

Pour ceux qui seraient choqués à l'idée de commettre le crime de lèse-standard de ne pas mettre de doctype (il y en a toujours), répétons que c'est justement de cette manière qu'on respecte les standards, quand une page comporte un code inexistant dans un des formats (X)HTML normalisés. Pas en mettant un DocType fantaisiste sans rapport avec le code réel.
Modifié par Laurent Denis (17 Sep 2005 - 07:05)
MErci Laurent pour ces explications claires et précises, et la pédagogie dont tu fais preuve.
a écrit :
Ne pas mettre de DOCTYPE...

En effet, je n'y avais pas pensé, faut dire qu'on lit tellement sur les tutoriaux que c'est une grave erreur de ne pas mettre de Doctype... mais dans mon cas, je le comprends.

Résultat sans Doctype: J'ai les même résultats que si je mets le doctype 3.2.

Tu me dis de ne pas mettre le doctype 3.2, puisque ce n'est pas une page en html 3.2. Pourtant, le Html 3.2 n'est il pas l'ancêtre du 4.1, au vu de cet article:
a écrit :
Après la brêve apparition d'un HTML 3.0, qui ne vit jamais officiellement le jour, le HTML 3.2 devint le standard officiel le 14 janvier 1997. Les apports les plus marquants du HTML 3.2 étaient la standardisation des tableaux ainsi que d'un grand nombre d'éléments de présentation.

Le 18 décembre 1997, le HTML 4.0 a été publié. La version 4.0 du langage HTML standardise notamment les feuilles de style et les cadres (frames). La version HTML 4.01, apparue le 24 décembre 1999 apporte quelques modifications mineures au HTML 4.0.
parue sur http://www.commentcamarche.net/html/htmlintro.php3[/url].

MA page est bien du code Html, avec une feuille CSS externe, et du php pour le chargement des news. Sachant que les résultats sont identiques (pas de doctype ou doctype 3.2), je comprends mal pourquoi ce ne serait pas du ressort du doctype 3.2.

Quand à mon client, il se fout royalement du doctype. Déjà que la norme W3C et autres trucs internet le laissent de marbre...lui, tout ce qu'il veut, c'est que ça marche: sur IE PC et Mac (je ne suis pas maqueux, mais au dire de ceux-ci, il semblerait que ce navigateur soit abandonné au profit de Safari, plus apprécié par les maqueux semble t'il). Quand à moi, j'essaye en contrepartie, à faire le plus propre possible.
Ce n'est pas pour autant que je ne compte pas lui faire partager le fruit de la culture Web, que je récolte sur ce forum.

Merci
Cordialement
Furet
furet92 a écrit :

MA page est bien du code Html, avec une feuille CSS externe, et du php pour le chargement des news. Sachant que les résultats sont identiques (pas de doctype ou doctype 3.2), je comprends mal pourquoi ce ne serait pas du ressort du doctype 3.2.

Parce que <marquee> n'est pas du HTML 3.2, pas plus qu'il n'est du HTML 4.01, ou autre langage normalisé. <marquee> est un code propriétaire Microsoft et ne passera pas au validateur, peu importe le DOCTYPE.
Re

En effet, c'est vrai que "marquee" est propriétaire. J'avais oublié.
Question stupide peut être, mais si c'est propriétaire IE, pourquoi cela est il pris en compte par les autres navigateurs, et pourquoi le validateur W3C ne m'en fait pas la remarque.
Car, en passant le site au validateur de Firefox (une extension) ou au validateur officiel W3C http://validator.w3.org/ , je n'ai pas de messages d'erreurs ou de warning pour la balise "marquee", par contre, j'en ai une pour le fait que la page ne contient pas de Doctype.

En tout cas, merci pour ces infos, elles me sont très utilses
.
Quand à mon pb, je le considère désormais comme résolu, savoir:
- ne pas mettre de Doctype sur cette page (à condition que IE MAc me fasse bien dérouler les news dans ce mode, mais le we, je n'ai pas de mac pour tester.
- et tant pis pour Netscape et Opéra car au vu des dernières stats Web sur: http://www.w3schools.com/browsers/browsers_stats.asp , Netscape ne représente que 0,5% et Opéra que 1%.
Dommage, j'aurais bien voulu que cela marche aussi pour eux, mais comme vous le précisiez, mettre un code, au risque d'alourdir inutilement la page, et sans être vraiment sûr du degré de discernement effectué (sur le useragent, seule solution), surtout quand je découvre qu'Opéra peut se faire passer par défaut pour IE (il peut aussi se faire passer pour Opéra (!!) ou Netscape, en modifiant son useragent, il suffit de changer les paramètres dans les "Préférences rapides")... le jeu n'en vaut pas la chandelle.

Cordialement
Furet
Modifié par furet92 (17 Sep 2005 - 18:47)
furet92 a écrit :

Car, en passant le site au validateur de Firefox (une extension) ou au validateur officiel W3C http://validator.w3.org/ , je n'ai pas de messages d'erreurs ou de warning pour la balise "marquee", par contre, j'en ai une pour le fait que la page ne contient pas de Doctype.

Parce que le validateur ne trouvant pas de DOCTYPE, il n'ira pas plus loin. Comment saurait-il comment analyser ta page sans savoir en vertu de quelle norme elle a été écrite ?
Modifié par Stephan (17 Sep 2005 - 18:52)
Bonjour,

furet92 a écrit :
surtout quand je découvre qu'Opéra peut se faire passer par défaut pour IE (il peut aussi se faire passer pour Opéra (!!) ou Netscape, en modifiant son useragent, il suffit de changer les paramètres dans les "Préférences rapides")...


ah... Cette vieille légende sur Opera supposé se faire passer pour IE ou Mozilla !

Elle est totalement fausse, et n'est due qu'à l'incompétence de quelques auteurs d'articles agravée par un discours très ambigu d'Opera sur le sujet (cela permettait de prétendre que les stats d'utilisation d'Opera le sous-estiment systématiquement, ce qui est en fait généralement faux).

Il faut distinguer deux mécanismes bien différents :

- Le cas général: la [i]pseudo-identification comme une autre navigateur[/b]

L'utilisateur d'Opera peut en effet modifier à la volée l'user-agent envoyé au serveur, via les préférences rapides. Mais il ne s'agit que de duper les scripts d'identification amateurs ne sachant pas utiliser correctement une chaîne user-agent, et qui bloqueraient Opera par ignorance.

Par exemple, celle qui l'assimile à IE est : Mozilla/4.0 (compatible; MSIE 6.0; OS) [b]Opera X.Y Smiley la [/i].

Comme le montre cet exemple, toutes les chaînes d'identification envoyées dans ce cas permettent à un script bien conçu d'identifier Opera sans confusion possible. C'est le cas, au passage, des principaux services de statistiques de fréquentation.


- Les exceptions de véritable identification comme une autre navigateur

D'autre part, depuis l'actuelle version 8.0, Opera utilise également un autre mécanisme d'identification, réservé à des sites bien précis (une douzaine actuellement). Ce mécanisme est géré via un fichier de configuration automatiquement actualisé depuis le serveur d'opera.com, permettant à Opera de faire varier la liste des sites concernés en fonction des besoins.

- Pour certains sites, ce mécanisme se contente de forcer une des pseudo-identifications ci-dessus, afin que l'utilisateur n'ait pas à le faire lui-même. C'est le cas, par exemple, pour msdn.microsoft.com dont le système d'identification du navigateur via .Net est une superbe démonstration de ce qu'il ne faut pas faire parce que ça ne marche pas.

- Pour d'autres, il force au contraire l'identification comme Opera et empêche une pseudo-identification comme IE ou Mozilla : C'est nécessaire par exemple quand Opera vérifie automatiquement la disponibilité d'une version plus récente du navigateur auprès du serveur d'opera.com.C'est également nécessaire pour le bon accès à gmail.

- Enfin, pour une poignée de sites (5 à l'heure actuelle), il force l'identification comme Mozilla ou IE en masquant entièrement Opera. Pourquoi ? Tout simplement parce que ces sites fonctionnent parfaitement dans Opera, mais que leurs responsables lui en interdisent volontairement l'accès (et que des négociations entre Opera Sa et les sociétés concernées n'ont pas abouties ou sont en cours). Il s'agit essentiellement de grands sites bancaires (la Deutsche Bank, par exemple) ayant une approche dépassée des problèmes de sécurisation des transactions.

Notons qu'aucun site français ne figure dans la liste actuelle, mais que virginmega.fr serait un excellent candidat. Ce site est un merveilleux exemple de projet qui a été mené par des décideurs incompétents croyant pouvoir générer durablement des revenus sans se préoccuper de qualité Web, ou réalisé par des développeurs aux compétences datant du siècle dernier. </fin de mon petit agacement matinal à propos de ce site>

En résumé :
- Opera est toujours parfaitement identifiable comme tel
- sauf, à ce jour, aux yeux de 5 sites précis sur l'ensemble du Web. Plus quelques sites ajoutés manuellement par quelques utilisateurs avancés d'Opera qui modifie le fichier de configuration en question.

(Je passe sur le 3e aspect de la question : l'utilisation des UserJs Opera, équivalent du GreaseMonkey de Firefox, c'est à dire de javascripts utilisateurs qui peuvent également servir à corriger des problèmes d'accès à un site en particulier. Leur utilisation est encore plus spécifique).

Voir http://blog-and-blues.org/weblog/2005/03/15/413-opera-user-agent-spoofing pour les détails.
Modifié par Laurent Denis (18 Sep 2005 - 07:45)
furet92 a écrit :
En effet, c'est vrai que "marquee" est propriétaire. J'avais oublié.
Question stupide peut être, mais si c'est propriétaire IE, pourquoi cela est il pris en compte par les autres navigateurs


Parce que Netscape (puis Mozila et Firefox), Opera, Safari, etc. ont été contraint d'implémenter une partie des éléments propriétaires Microsoft. S'ils ne l'avaient pas fait, leurs utilisateurs n'auraient pas pu consulter les nombreux sites optimisés pour IE, et auraient renoncé à les utiliser, au profit d'Internet Explorer.

Le problème de ces implémentations "comme IE" se pose toujours aujourd'hui pour les navigateurs alternatifs. Il est résolu au cas par cas, de différentes manières :
- implémentation complète comme pour <marquee>
- implémentation uniquement en mode de rendu Quirks (le modèle de boîte Microsoft pour Opera, les couleurs CSS écrite sans le signe # pour Firefox, etc.)
- implémentation plus complexe (le document.all indétectable de Firefox)
- pas d'implémentation (les Data Island <xml>, si ma mémoire est bonne, ne sont implémentées par aucun autre navigateur qu'IE).

furet92 a écrit :
MA page est bien du code Html, avec une feuille CSS externe, et du php pour le chargement des news. Sachant que les résultats sont identiques (pas de doctype ou doctype 3.2), je comprends mal pourquoi ce ne serait pas du ressort du doctype 3.2.


Le fait que les résultats soient identiques tient simplement au fonctionnement du doctype switching, pour qui une DTD HTML3.2 signifie une page ancienne, écrite très probablement à l'époque d'une version antérieure du navigateur et qui doit être traitée de manière compatible au comportement de cette version. Il ne faut pas oublier que le rôle du doctype switching est surtout de permettre aux navigateurs modernes d'afficher correctement les anciens documents relevant d'anciens standards ou indifférents à la notion de standards.

D'autre part, il n'y a pas que l'élément <marquee> qui fait que ton code n'est pas du HTML3.2. Il y a également :
- la syntaxe XHTML si tu l'as utilisée (fermeture des tags EMPTY du type <img... />
- et surtout, les éléments et attributs ajoutés ou modifiés depuis HTML3.2, que ce soit en HTML4.01 ou en XHTML1.0. Voir http://www.w3.org/TR/1998/REC-html40-19980424/appendix/changes.html#h-A.1 pour la liste complète. A titre d'exemple :

a écrit :
New elements

The new elements in HTML 4.0 are: ABBR, ACRONYM, BDO, BUTTON, COL, COLGROUP, DEL, FIELDSET, FRAME, FRAMESET, IFRAME, INS, LABEL, LEGEND, NOFRAMES, NOSCRIPT, OBJECT, OPTGROUP, PARAM, S (deprecated), SPAN, TBODY, TFOOT, THEAD, and Q.


Je suppose que tu dois bien utiliser quelques span, label ou fiedlset, sans compter le noscript de rigueur pour tes scripts Smiley cligne
Modifié par Laurent Denis (18 Sep 2005 - 07:24)
Merci bcp, vraiment, Laurent et Stéphane, pour ces explications précises sur l'utilisation correcte des Doctypes et l'intérêt du "bon emploi" qui en découle.
C'est désormais bcp plus clair dans mon esprit.
Et le temps que j'ai passé à la résolution de ce pb, ne pourra que m'ancrer profondément, ces nouvelles connaissances dans mon esprit.

Cordialement
Furet