11548 sujets

JavaScript, DOM et API Web HTML5

Dans une de ses réponses sur les scripts et le <noscript>, notre ami Laurent Denis, nous indiquait à propos du HTML 4.01 :

a écrit :
Ah... Pas simple, HTML4.01, sur ce coup là. Résumons:

L'élément <script> est un élément de type%inline. Pour cette raison (et d'autres, mais passons sur les détails des DTD), il peut se placer, en HTML transitional comme en strict:
- directement dans l'élément <body>
- dans l'élément <head>
- dans un élément %bloc
- dans un élément %inline

L'élément <noscript>, lui, est un élément de type %block. Il ne peut donc se placer (toujours en précisant qu'il y a d'autres raisons liés à des détails des DTD), que :
- directement dans l'élément <body>
- dans l'élément <head>
- dans un élément %bloc"


Mais qu'en est-il en XHTML 1.0 Transitionnel ? Le <noscript> peut-il se placer dans le <head> car notre bon vieux validateur du W3C nous rapporte un erreur de codage.

A priori, je ne pense pas mais je préfererai avoir plusieurs opinions.

Merci de vos réponses éclairantes.
bonjour,
La balise <noscript> qui n'est pas toujours bien interprétée, n'est pas necessaire si le script est conçu comme un confort supplémentaire à une fonctionnalité déjà prévue en html ou côté serveur.
Hello. Smiley smile
Dexter Morgan a écrit :
Mais qu'en est-il en XHTML 1.0 Transitionnel ? Le <noscript> peut-il se placer dans le <head> car notre bon vieux validateur du W3C nous rapporte un erreur de codage.
Selon la DTD, la situation n'a pas changé.

Ceci dit, l'utilisation de <noscript> n'est pas conseillée, non pas parce qu'elle n'est pas bien interprétée (à ma connaissance, elle est correctement utilisée par les navigateurs qui ne supportent pas JavaScript ou pour qui JavaScript a été désactivé), mais parce qu'elle ne prend pas en compte le cas où JavaScript est disponible mais le support du DOM n'est pas suffisant, ou l'exécution du script a entraîné une erreur, ...

L'idéal est de partir d'un document (X)HTML utilisable tel quel, et d'ajouter une surcouche de JavaScript qui va modifier l'arbre DOM.
Julien Royer a écrit :
Hello. Smiley smile
Selon la DTD, la situation n'a pas changé.

Ceci dit, l'utilisation de <noscript> n'est pas conseillée, non pas parce qu'elle n'est pas bien interprétée (à ma connaissance, elle est correctement utilisée par les navigateurs qui ne supportent pas JavaScript ou pour qui JavaScript a été désactivé), mais parce qu'elle ne prend pas en compte le cas où JavaScript est disponible mais le support du DOM n'est pas suffisant, ou l'exécution du script a entraîné une erreur, ...

L'idéal est de partir d'un document (X)HTML utilisable tel quel, et d'ajouter une surcouche de JavaScript qui va modifier l'arbre DOM.

Merci beaucoup pour cette réponse. Smiley cligne

Donc techniquement, on peut mettre un <noscript> dans le <head> mais si tel est la cas, le joli validateur du W3C nous rapporte une erreur de code si cela arrive.

J'avais déjà pas super confiance dans les validateurs du W3C mais là... on frise l'incohérence... Smiley biggrin
Dexter Morgan a écrit :
Donc techniquement, on peut mettre un <noscript> dans le <head> mais si tel est la cas, le joli validateur du W3C nous rapporte une erreur de code si cela arrive.
Et rien ne garantit que cela fonctionne avec tous les navigateurs. Smiley cligne
Dexter Morgan a écrit :
J'avais déjà pas super confiance dans les validateurs du W3C mais là... on frise l'incohérence... Smiley biggrin
Comme je l'ai dit dans mon message précédent, pas vraiment, puisque l'élément noscript n'est pas totalement fiable. Il vaut à mon avis mieux éviter de le considérer comme un contenu alternatif, et plutôt voir les choses dans l'autre sens : j'ai une page HTML qui fonctionne bien sans JavaScript, et je viens y greffer une fonctionnalité JavaScript qui va l'enrichir. De cette façon, tu règles le problème des cas où le navigateur supporte JavaScript mais de façon très primitive par exemple.
Modifié par Julien Royer (20 Mar 2007 - 13:52)