gratifiant > comp.divers.* > comp.infosystemes.www.auteurs

Thierry Loiseau (01/10/2019, 09h07)
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%2Fcalcul s%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();"
------------------------------------------------------------------

:(
Sergio (01/10/2019, 09h53)
Le 01/10/2019 à 09:07, Thierry Loiseau a écrit :
[..]
> else {pdate.mois.value=1;pdate.annee.value++}
> calculjj();"
> ------------------------------------------------------------------ Plus qu'à sous-programmiser la procédure :


<script type="text/javascript" language="javascript">
<!--
function incdate() {
pdate=document.forms[1];
if (pdate.mois.value<12)
pdate.mois.value++;
else {pdate.mois.value=1;pdate.annee.value++}
calculjj();"
}
//-->
</script>

<!-- ....
//-->

onclick="incdate()"
Thierry Loiseau (01/10/2019, 17h18)
Sergio <serge.laposte> wrote:

[..]
> <!-- ....
> //-->
> onclick="incdate()"


Si c'est juste pour contourner le résultat du validator, le plus simple
est de modifier le code ;-)

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

J'ai cherché encore dans le code et je ne trouve pas la raison de
l'interprétation du "<"

:(
Thierry Loiseau (01/10/2019, 17h54)
Thierry Loiseau <loiseauthierry> 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 !`

J'ai fait un test en insérant quelque chose comme
"...
if (a<1) a=a;
...."

et hop ! validator pas content :D
Olivier Miakinen (01/10/2019, 18h44)
Le 01/10/2019 à 17:54, Thierry Loiseau a écrit :
> Thierry Loiseau <loiseauthierry> wrote:
> /A priori/, il interprète systématiquement le chevron lorsque le
> JavaScript se trouve dans une balise html !`
> J'ai fait un test en insérant quelque chose comme
> "...
> if (a<1) a=a;
> ..."
> et hop ! validator pas content :D


Ça fonctionne si tu remplaces le « < » par son entité html « &lt; » ?

Sinon, tu peux juste mettre le code dans une fonction à part, pour
n'avoir qu'un appel de fonction dans la balise.
Nicolas George (01/10/2019, 19h02)
Olivier Miakinen , dans le message <qmvvor$1fst$1>,
a écrit :
> Ça fonctionne si tu remplaces le « < » par son entité html « &lt; » ?


Si ça ne fonctionne pas, jeter le navigateur à la poubelle.

Ce serait bien si ceux qui se mêlent de faire le moindre développement
web prenaient le temps d'apprendre les notions minimales, comme celle de
couche d'abstraction. Ça éviterait que le web soit si pourri, question
sécurité, question efficacité, question utilisabilité, etc.
Thierry Loiseau (03/10/2019, 21h19)
Olivier Miakinen <om+news> wrote:

> Ça fonctionne si tu remplaces le « < » par son entité html « &lt; » ?


Euh, ben, je n'ai pas essayé en fait !
Étant si bien que cela pourrait faire plaisir au validator, je ne pense
pas que JavaScript appréciera... loin de là :)
Un évènement tel que onclick="XXX" appelle dans le code dit "XXX" (me
semble-t-il) du JavaScript ?!

Un :
-----
a=(a<1)?(a=2019):(a=1);
-----

ne sera pas forcément bien interprété par un :

-----
a=(a&lgt;1)?(a=2019):(a=1);
-----

> Sinon, tu peux juste mettre le code dans une fonction à part, pour
> n'avoir qu'un appel de fonction dans la balise.


Déjà répondu par ailleurs... une petite modification du code suffit !

:(
Thierry Loiseau (03/10/2019, 21h19)
Nicolas George <nicolas$george> wrote:

> Olivier Miakinen , dans le message <qmvvorfst>,
> a écrit :
> Si ça ne fonctionne pas, jeter le navigateur à la poubelle.
> Ce serait bien si ceux qui se mêlent de faire le moindre développement
> web prenaient le temps d'apprendre les notions minimales, comme celle de
> couche d'abstraction. Ça éviterait que le web soit si pourri, question
> sécurité, question efficacité, question utilisabilité, etc.


??? (raisonnement metaphysique sans doute)
Thierry Loiseau (03/10/2019, 21h21)
Olivier Miakinen <om+news> wrote:

> Ça fonctionne si tu remplaces le « < » par son entité html « &lt; » ?


Euh, ben, je n'ai pas essayé en fait !
Étant si bien que cela pourrait faire plaisir au validator, je ne pense
pas que JavaScript appréciera... loin de là :)
Un évènement tel que onclick="XXX" appelle dans le code dit "XXX" (me
semble-t-il) du JavaScript ?!

Un :
-----
a=(a<1)?(a=2019):(a=1);
-----

ne sera pas forcément bien interprété par un :

-----
a=(a&lt;1)?(a=2019):(a=1);
-----

> Sinon, tu peux juste mettre le code dans une fonction à part, pour
> n'avoir qu'un appel de fonction dans la balise.


Déjà répondu par ailleurs... une petite modification du code suffit !

:(
Thierry Loiseau (04/10/2019, 03h55)
Olivier Miakinen <om+news> wrote:

> Ça fonctionne si tu remplaces le « < » par son entité html « &lt; » ?


Euh, ben, je n'ai pas essayé en fait !
Et si bien que cela pourrait faire plaisir au Validator, je ne pense
pas que JavaScript appréciera... loin de là :)
Un événement tel que onclick="XXX" appelle dans le code dit "XXX" (me
semble-t-il) du JavaScript ?!

Un :
-----
a=(a<1)?(a=2019):(a=1);
-----

ne sera pas forcément bien interprété par un :

-----
a=(a&lt;1)?(a=2019):(a=1);
-----

> Sinon, tu peux juste mettre le code dans une fonction à part, pour
> n'avoir qu'un appel de fonction dans la balise.


Déjà répondu par ailleurs... une petite modification du code suffit !

Message-ID: <1oes2ef.1xjhpc0o10pf8N%loiseauthierry>

:(
Thierry Loiseau (04/10/2019, 04h21)
Olivier Miakinen <om+news> wrote:

> Ça fonctionne si tu remplaces le « < » par son entité html « &lt; » ?


Euh, ben, je n'ai pas essayé en fait !
Et si bien que cela pourrait faire plaisir au Validator, je ne pense
pas que JavaScript appréciera... loin de là :)
Un événement tel que onclick="XXX" appelle dans le code dit "XXX" (me
semble-t-il) du JavaScript ?!

Un :
-----
a=(a<1)?(a=2019):(a=1);
-----

ne sera pas forcément bien interprété par un :

-----
a=(a&lt;1)?(a=2019):(a=1);
-----

> Sinon, tu peux juste mettre le code dans une fonction à part, pour
> n'avoir qu'un appel de fonction dans la balise.


Déjà répondu par ailleurs... une petite modification du code suffit !

:(
Pierre Maurette (04/10/2019, 08h16)
Thierry Loiseau :
[..]
> 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.).
Thierry Loiseau (04/10/2019, 08h36)
Pierre Maurette <maurette.pierre> 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 ?

<
lculs%2Findex.htm>
[..]
> 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
Y.D. (06/10/2019, 15h59)
Le 01/10/2019 à 17:54, Thierry Loiseau a écrit :
> Thierry Loiseau <loiseauthierry> 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
() 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)
Thierry Loiseau (09/10/2019, 05h13)
Y.D. <no-spam> 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 :)

Discussions similaires