Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Le validator m'agace...

16 réponses
Avatar
loiseauthierry
Bonjour,

Mise à part le fait qu'il n'accepte que j'utilise la balise <marquee>
(et je le comprends, je vais prendre le temps de faire un truc en
JavaScript), il m'alerte pour un onclick où j'utilise le signe <
(inférieur) comme étant un début de balise ?

<https://validator.w3.org/check?uri=http%3A%2F%2Fastrophoto.free.fr%2Fcalculs%2Findex.htm>

<http://astrophoto.free.fr/calculs/index.htm> (ligne 222)

Je ne parviens pas à trouver l'erreur qui doit être quelque part en
amont si j'ai bien compris ?!

------------------------------------------------------------------
onclick="
pdate=document.forms[1];
if (pdate.mois.value<12)
pdate.mois.value++;
else {pdate.mois.value=1;pdate.annee.value++}
calculjj();"
------------------------------------------------------------------

:(
--
* * __*__ *
* * * -----oOOo--- O ---oOOo------- * *
http://astrophoto.free.fr *
* * -------- oOOo oOOo ---------- *

6 réponses

1 2
Avatar
Pierre Maurette
Thierry Loiseau :
Bonjour,
Mise à part le fait qu'il n'accepte que j'utilise la balise <marquee>
(et je le comprends, je vais prendre le temps de faire un truc en
JavaScript), il m'alerte pour un onclick où j'utilise le signe <
(inférieur) comme étant un début de balise ?
<https://validator.w3.org/check?uri=http%3A%2F%2Fastrophoto.free.fr%2Fcalculs%2Findex.htm>
<http://astrophoto.free.fr/calculs/index.htm> (ligne 222)
Je ne parviens pas à trouver l'erreur qui doit être quelque part en
amont si j'ai bien compris ?!
------------------------------------------------------------------
onclick="
pdate=document.forms[1];
if (pdate.mois.value<12)
pdate.mois.value++;
else {pdate.mois.value=1;pdate.annee.value++}
calculjj();"
------------------------------------------------------------------
:(

Dans les documentations plus ou moins officielles, la valeur à
attribuer à l'attribut onclick n'est à mon sens pas claire. Le texte
est ambigu, mais les examples proposent exclusivement un appel de
fonction (donc du code Javascript). A chaque fois que j'ai eu des
soucis à ce niveau, en général sur un navigateur donné, j'avais tenté
autre chose. J'ai donc définitivement pris la décision de
systématiquement utiliser un appel de fonction. Ou de lier l'élément à
un handler dans le code, ce qui est plus souple.
Le validator me semble bogué, puisque soit il accepte la construction
du onclick (raw javascript, qui plus est multi-ligne) et l'insère
virtuellement entre <script></script>, soit il la warne (la bonne
attitude, je pense).
Concernant votre problème, et considérant que juste faire taire le
validator est particulièrement improductif, voire pire quand vous
changez la sémantique du code en remplaçant un '>' par un '==', je vous
suggère de refactorer en ajoutant un bloc Javascript avec une fonction
par onclick=. Ce bloc est le bon endroit pour gérer les gestions un peu
blingbling ded boutons (toggle, couleur, texte, etc.).
--
Pierre Maurette
Avatar
loiseauthierry
Pierre Maurette wrote:
Thierry Loiseau :
Bonjour,
Mise à part le fait qu'il n'accepte que j'utilise la balise <marquee>
(et je le comprends, je vais prendre le temps de faire un truc en
JavaScript), il m'alerte pour un onclick où j'utilise le signe <
(inférieur) comme étant un début de balise ?


<https://validator.w3.org/check?uri=http%3A%2F%2Fastrophoto.free.fr%2Fca
lculs%2Findex.htm>
<http://astrophoto.free.fr/calculs/index.htm> (ligne 222)
Je ne parviens pas à trouver l'erreur qui doit être quelque part en
amont si j'ai bien compris ?!
------------------------------------------------------------------
onclick="
pdate=document.forms[1];
if (pdate.mois.value<12)
pdate.mois.value++;
else {pdate.mois.value=1;pdate.annee.value++}
calculjj();"
------------------------------------------------------------------
:(

Dans les documentations plus ou moins officielles, la valeur à
attribuer à l'attribut onclick n'est à mon sens pas claire. Le texte
est ambigu, mais les examples proposent exclusivement un appel de
fonction (donc du code Javascript). A chaque fois que j'ai eu des
soucis à ce niveau, en général sur un navigateur donné, j'avais tenté
autre chose. J'ai donc définitivement pris la décision de
systématiquement utiliser un appel de fonction. Ou de lier l'élément à
un handler dans le code, ce qui est plus souple.
Le validator me semble bogué, puisque soit il accepte la construction
du onclick (raw javascript, qui plus est multi-ligne) et l'insère
virtuellement entre <script></script>, soit il la warne (la bonne
attitude, je pense).
Concernant votre problème, et considérant que juste faire taire le
validator est particulièrement improductif, voire pire quand vous
changez la sémantique du code en remplaçant un '>' par un '==', je vous
suggère de refactorer en ajoutant un bloc Javascript avec une fonction
par onclick=. Ce bloc est le bon endroit pour gérer les gestions un peu
blingbling ded boutons (toggle, couleur, texte, etc.).

Je cite intégralement votre message que je trouve très intéressant !
"juste faire taire le validator est particulièrement improductif"
Tout à fait d'accord et... d'où mon article ! Ceci-dit, *si* le
Validator bogue à ce niveau, je considèrerais bien mon code comme juste
et fonctionnel... Reprendre tout mes scripts ne me semble pas trop
envisageable :(
Merci pour votre message encore une fois !!
Thierry
--
* * __*__ *
* * * -----oOOo--- O ---oOOo------- * *
http://astrophoto.free.fr *
* * -------- oOOo oOOo ---------- *
Avatar
Y.D.
Le 01/10/2019 à 17:54, Thierry Loiseau a écrit :
Thierry Loiseau wrote:
J'ai cherché encore dans le code et je ne trouve pas la raison de
l'interprétation du "<"

/A priori/, il interprète systématiquement le chevron lorsque le
JavaScript se trouve dans une balise html !`

Non, il l’interprète dans tout le fichier XHTML sauf si le < se
trouve dans une section CDATA. Voir la spécification XHML 1
(http://www.la-grange.net/w3c/xhtml1/#diffs) au § 4.8.
J'ai fait un test en insérant quelque chose comme
"...
if (a<1) a=a;
..."

Pour contourner le problème et m’éviter la section CDATA,
j’inverse bêtement le test :
if (pdate.mois.value<12) -->
if (12>pdate.mois.value)
--
Y.D.
Avatar
loiseauthierry
Y.D. wrote:
Pour contourner le problème et m'éviter la section CDATA,
j'inverse bêtement le test :
if (pdate.mois.value<12) -->
if (12>pdate.mois.value)

Pas bêtement bête çà !!
Merci YD :)
--
* * __*__ *
* * * -----oOOo--- O ---oOOo------- * *
http://astrophoto.free.fr *
* * -------- oOOo oOOo ---------- *
Avatar
Nicolas George
Thierry Loiseau, dans le message
<1of5xnn.1ez6bel1uibyheN%, a écrit :
Pas bêtement bête çà !!

À l'intérieur d'un attribut, > est aussi interdit que <.
Avatar
Y.D.
Le 09/10/2019 à 10:59, Nicolas George a écrit :
À l'intérieur d'un attribut, > est aussi interdit que <.

Ah ? Il faudra prévenir le validator qui l’accepte pourtant
sans broncher ;-)
Le seul cas où > doit être banni c’est quand il pourrait être
confondu avec la fin d’une section CDATA introduite par
<![CDATA[ donc à la fin de la chaîne ]]>
Je donne ma source : https://www.w3.org/TR/REC-xml/#syntax
Y.D.
1 2