5568 sujets

Sémantique web et HTML

Bonjour,

Sur une page marquée :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

j'ai un script qui vient écrire un tag <img /> dans la page pour afficher une image aléatoire.

J'ai codé
<script type="text/javascript">document.write("<img  src="+imagealeatoire()+"
 width='150' height='100' alt=' '/>");
</script>


Le validateur me met une erreur :
a écrit :
Line 194, column 157: document type does not allow element "img" here
...)+" width='150' height='100' alt=' '/>");</script>
The element named above was found in a context where it is not allowed.
This could mean that you have incorrectly nested elements -- such as a "style" element in the "body" section
instead of inside "head" -- or two elements that overlap (which is not allowed).


J'y suis depuis un bon moment et je ne m'en sors pas.

Quelqu'un aurait-il une idée sur l'origine du problème ?

Merci par avance.
Modifié par papyjo (14 May 2005 - 15:55)
Administrateur
Salut,

Je suppose que ton JS place ton <img> directement dans le <body>.
Or en strict, tu ne peux pas placer d'élément en ligne directement dans le body, il faut les contenir dans des blocs.

EDIT : ou alors tu as simplement mis ton script JS dans le body au-lieu du head.
Modifié par Raphael (14 May 2005 - 10:10)
Merci de ta réponse Raphael.

a écrit :
Or en strict, tu ne peux pas placer d'élément en ligne directement dans le body, il faut les contenir dans des blocs.


J'ai bien inscrit le script dans un bloc :

<p style="margin:35px 0px 0px -5px;text-align:center;">
<script type="text/javascript">document.write("<img style='border:solid 2px #00667f;padding:1px;' src="+imagealeatoire()+" width='150' height='100' alt=' '/>");</script></p>


Et si c'est dû au fait que l'appel du script est dans le <body>, je ne vois pas comment faire. Smiley decu
Ton script n'a pas l'air d'être dans une section CDATA. Dans ce cas les caractères spéciaux XML ne sont pas échappés. L'erreur vient peut être de là.

++
Salut,

Je ne peux pas régler le problème du script. J'ai validé la page en HTML 4.01. Tant pis Smiley decu

Je mets le topic en [Résolu]
Modifié par papyjo (14 May 2005 - 15:55)
Administrateur
papyjo a écrit :
Merci de ta réponse Raphael.

Or en strict, tu ne peux pas placer d'élément en ligne directement dans le body, il faut les contenir dans des blocs.


J'ai bien inscrit le script dans un bloc :

<p style="margin:35px 0px 0px -5px;text-align:center;">
<script type="text/javascript">document.write("<img style='border:solid 2px #00667f;padding:1px;' src="+imagealeatoire()+" width='150' height='100' alt=' '/>");</script></p>

Oui, ton script en lui-même est inscrit dans un bloc, mais je te parle du résultat, du document.write.
L'image générée par le document.write est très certainement orpheline dans le <body>

En clair, il faut faire un document.write("<div><img style.... Smiley smile
Merci de ta réponse Raphael,

En fait hier soir j'ai passé le validateur en XHTML 1.1 strict en codant :

<script type="text/javascript">
<!--
document.write("<img style='border:solid 2px #00667f;padding:1px;' src="+imagealeatoire()+" width='150' height='100' alt=' '/>");
-->
</script>	

Simplement ajouté les tags de commentaire
Administrateur
papyjo a écrit :
En fait hier soir j'ai passé le validateur en XHTML 1.1 strict en codant :

Tu es bien sûr de faire vraiment du XHTML 1.1 ? Smiley cligne

PS : d'ailleurs il n'existe pas de XHTML 1.1 strict
Modifié par Raphael (15 May 2005 - 11:06)