GNT sans publicité, site mobile, fonctionnalitées exclusives...

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
--
Lire les 33 réponses

Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 7
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Olivier Miakinen
Le #22041011
Bonjour,

Le 12/02/2010 18:14, Jean Le Brun a écrit :

[...]

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 > " myHtml); });



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é :


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>"));



Idem avec
Dans les deux cas, qu'il s'agisse de la balise <b> ou de la balise
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.



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 ? ;-))

Quelqu'un a-t-il sur ce forum déjà vu un cas analogue ?



Oui, il me semble que c'est le B.-A.-BA du JavaScript dans du HTML...
:-)

Cordialement,
--
Olivier Miakinen
Olivier Miakinen
Le #22041001
Le 12/02/2010 19:41, je répondais à Jean Le Brun :

Quelqu'un a-t-il sur ce forum déjà vu un cas analogue ?



Oui, il me semble que c'est le B.-A.-BA du JavaScript dans du HTML...
:-)



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).
SAM
Le #22040991
Le 2/12/10 6:14 PM, Jean Le Brun a écrit :
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.
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 :



Quand on fait écrire des balises par le JavaScript :
- ou bien on écrit : &lt; à la place de <

map.addOverlay(createMarker(point, 1, "Gérard Denjean",
"&lt;a href=#1>Détails&lt;/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);
}
);


Dans les deux cas, qu'il s'agisse de la balise <b> ou de la balise



Oui, c'est en général là que ça enquiquine (le javascript en particulier)

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.



Oui ... bon ... j'ai idée que cet "encapsulage"
n'est permis que dans les fichiers en Xhtml

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ù ?



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
SAM
Le #22040981
Le 2/12/10 7:41 PM, Olivier Miakinen a écrit :

si ta page gougle (que je n'ai pas trouvée)



Bien sûr ! :-)

est comme ta page d'accueil, c'est du HTML 4.01
Transitional (quand est-ce que tu passes au Strict ? ;-))



Hou la la !
Faut pas déc... non plus !
à 102ans se lancer dans le html en 2007 c'est déjà pas mal non ?

Quelqu'un a-t-il sur ce forum déjà vu un cas analogue ?



Oui, il me semble que c'est le B.-A.-BA du JavaScript dans du HTML...
:-)



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
Sergio
Le #22040961
SAM a écrit :

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.
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 :



Quand on fait écrire des balises par le JavaScript :
- ou bien on écrit : &lt; à la place de <

map.addOverlay(createMarker(point, 1, "Gérard Denjean",
"&lt;a href=#1>Détails&lt;/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);
}
);


Dans les deux cas, qu'il s'agisse de la balise <b> ou de la balise





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
Publicité
Suivre les réponses
Poster une réponse
Anonyme