Validateur W3C - Erreur javascript
Le
Jean Le Brun
Bonjour à toutes et à tous,
Je suis en train de valider la trentaine de pages d'un site perso
http://www.cyranorion.fr/eta_sam/
et une seule d'entre elles (gougle.html) me pose problème.
Comme son nom le suggère elle est censée afficher une carte de France
de Google Maps agrémentée de repères géographiques.
Cette page fonctionne parfaitement bien sous IE et FireFox mais le
validateur du W3C y voit pas mal d'erreurs et en particulier les deux
suivantes :
1 -
line 50 column 88 - Erreur: end tag for element "B" which is not open
dans la ligne :
GEvent.addListener(marker,"click", function() { var myHtml =
"<b>" + etab + "</b>"+"<br />" + info; map.openInfoWindowHtml(latlng,
myHtml); });
2 -
line 54 column 86 - Erreur: end tag for element "A" which is not open
dans la ligne :
map.addOverlay(createMarker(point, 1, "Gérard Denjean", "<a
href=#1>Détails</a>"));
Dans les deux cas, qu'il s'agisse de la balise <b> ou de la balise
<a>, il n'en détecte que la fermeture.
J'ai essayé d'utiliser la balise :
//<![CDATA[xxxxxxxxxxxxxxxxxxxxxxxxxxxxx//]]> pour "encapsuler" les
paramètres qui posent problème mais ne suis arrivé à rien de bon.
Comme en plus le validateur ne voit pas la balise de fermeture
(pourtant bien présente) d'une "table", je soupçonne un coup fourré
situé ailleurs mais où ?
J'ai trouvé une foule de messages approchants, du style conflit html
xml et utilisation de CDATA, mais aucun identique au mien.
Quelqu'un a-t-il sur ce forum déjà vu un cas analogue ?
Merci de m'avoir lu.
Cordialement,
jean
--
Je suis en train de valider la trentaine de pages d'un site perso
http://www.cyranorion.fr/eta_sam/
et une seule d'entre elles (gougle.html) me pose problème.
Comme son nom le suggère elle est censée afficher une carte de France
de Google Maps agrémentée de repères géographiques.
Cette page fonctionne parfaitement bien sous IE et FireFox mais le
validateur du W3C y voit pas mal d'erreurs et en particulier les deux
suivantes :
1 -
line 50 column 88 - Erreur: end tag for element "B" which is not open
dans la ligne :
GEvent.addListener(marker,"click", function() { var myHtml =
"<b>" + etab + "</b>"+"<br />" + info; map.openInfoWindowHtml(latlng,
myHtml); });
2 -
line 54 column 86 - Erreur: end tag for element "A" which is not open
dans la ligne :
map.addOverlay(createMarker(point, 1, "Gérard Denjean", "<a
href=#1>Détails</a>"));
Dans les deux cas, qu'il s'agisse de la balise <b> ou de la balise
<a>, il n'en détecte que la fermeture.
J'ai essayé d'utiliser la balise :
//<![CDATA[xxxxxxxxxxxxxxxxxxxxxxxxxxxxx//]]> pour "encapsuler" les
paramètres qui posent problème mais ne suis arrivé à rien de bon.
Comme en plus le validateur ne voit pas la balise de fermeture
(pourtant bien présente) d'une "table", je soupçonne un coup fourré
situé ailleurs mais où ?
J'ai trouvé une foule de messages approchants, du style conflit html
xml et utilisation de CDATA, mais aucun identique au mien.
Quelqu'un a-t-il sur ce forum déjà vu un cas analogue ?
Merci de m'avoir lu.
Cordialement,
jean
--

Poser une question


Le 12/02/2010 18:14, Jean Le Brun a écrit :
C'est à cause du </b>, que tu dois écrire </b> si tu inclus le
JavaScript directement dans le HTML. Le mieux serait de mettre tout
ton code JavaScript dans un fichier séparé :
Idem avec
Beurk ! La syntaxe XHTML serait une raison supplémentaire pour tout
mettre dans un fichier séparé. De toute façon, si ta page gougle (que
je n'ai pas trouvée) est comme ta page d'accueil, c'est du HTML 4.01
Transitional (quand est-ce que tu passes au Strict ? ;-))
Oui, il me semble que c'est le B.-A.-BA du JavaScript dans du HTML...
:-)
Cordialement,
--
Olivier Miakinen
J'ai oublié de donner le lien vers la norme expliquant le pourquoi du
comment :
Mais encore une fois, la seule façon propre de procéder consiste à
sortir du document HTML tout ce qui n'est pas du HTML, en particulier
les CSS (à mettre dans un fichier externe .css) et le JavaScript (à
mettre dans un fichier externe .js).
Quand on fait écrire des balises par le JavaScript :
- ou bien on écrit : < à la place de <
map.addOverlay(createMarker(point, 1, "Gérard Denjean",
"<a href=#1>Détails</a>"));
- ou bien on échappe le / de la balise fermante
map.addOverlay(createMarker(point, 1, "Gérard Denjean",
"<a href=#1>Détails</a>"));
GEvent.addListener(marker, "click", function() {
var myHtml = "<b>" + etab + "</b>"+"<br />" + info;
map.openInfoWindowHtml(latlng,myHtml);
}
);
Oui, c'est en général là que ça enquiquine (le javascript en particulier)
Oui ... bon ... j'ai idée que cet "encapsulage"
n'est permis que dans les fichiers en Xhtml
Balise mal placée ? </table></tfoot>
Des truc-bazars éparpillés entre une fermante et une ouvrante ?
</td>
blabla
<td>
</tr> blabla <tr>
On a 2 tables imbriquées et seule celle intérieure est fermée;
ligne 97 :
<!--- Affichage des noms devant la carte -->
<TABLE cellpadding="5" cellspacing="5" border="0" width="100%">
<tr>
<td align="justify" valign="top" class="subtitle">
<table border="1"
Si la fermeture des TR TD ou TH est optionnelle
celle des TABLE ne l'est pas
--
sm
Bien sûr ! :-)
Hou la la !
Faut pas déc... non plus !
à 102ans se lancer dans le html en 2007 c'est déjà pas mal non ?
c'est à dire que ...
... ça a l'air pondu par google
(en tous cas je ne reconnais pas le style de la prose de Jean)
Fodra p't'êt' leur dire ?
--
sm
Disons que dès qu'il y a un soupçon de javascript, le validateur se vautre lamentablement. On peut tomber sur des cas plus
compliqués, du genre une balise qui est ouverte par une fonction, générée en fermeture par une autre et toutes les variantes.
S'il se contentait d'ignorer tout ce qu'il y a entre <script> et </script>, ce serait un bon début !
Quant à mettre le js en extérieur, quand il n'y a qu'un bout de code, c'est vraiment pas la peine...
--
Serge http://leserged.online.fr/
Mon blog: http://cahierdesergio.free.fr/
Soutenez le libre: http://www.framasoft.org