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

Interface d'interpréteur ?

34 réponses
Avatar
Gloops
Bonjour tout le monde,

Il n'est certes pas difficile de trouver un interpr=E9teur Javascript=20
puisque tous les navigateurs web a priori font l'affaire.

Toutefois si on fait un peu de Javascript de temps en temps et qu'on a=20
le temps d'oublier quelques trucs entre deux, on perd pas mal de temps =E0=
=20
taper son fichier source, le sauvegarder, le charger dans le navigateur, =

lire le message d'erreur, re-s=E9lectionner la fen=EAtre d'=E9diteur, et =

repartir pour un tour.

N'existe-t-il pas un interpr=E9teur Javascript comme beaucoup d'entre nou=
s=20
ont utilis=E9 des interpr=E9teurs Basic ? A savoir qu'on tape une=20
instruction, et on lit le r=E9sultat directement en dessous, sans avoir =E0=
=20
attendre le chargement d'un fichier ou d'un outil ?

J' ai trouv=E9 deux outils se pr=E9sentant sur ce cr=E9neau, pour le prem=
ier=20
il fallait =EAtre =E9quip=E9 de la m=EAme plateforme de d=E9veloppement q=
ue les=20
auteurs, le deuxi=E8me d=E9marrait tr=E8s fort puisqu'il commen=E7ait d'e=
ntr=E9e=20
de jeu par me dire que alert n'=E9tait pas une instruction reconnue.=20
Alors, j'appr=E9hende le pire pour ce qui est de parcourir les n=9Cuds=20
enfants de getElementById.

Quelqu'un conna=EEtrait-il quelque chose de commode dans le domaine, que =

de pr=E9f=E9rence je puisse utiliser sous Windows ?

Sinon je vais bien pondre =E7a un de ces quatre en passant par un=20
webbrowser (=E7a servira aussi pour le VBscript), mais enfin si c'est d=E9=
j=E0=20
fait, peut-=EAtre en mieux ...

http://www.njs-javascript.org/js-0.2.5.tar.gz
http://www.jsdb.org/jsdb_win_1.6.zip

10 réponses

1 2 3 4
Avatar
SAM
Gloops a écrit, le 06/04/2008 05:33 :
Bon alors on avait dit SciTE ...




Effectivement, ça donne l'impression que ça aide bien, on élimine un
certain nombre de syntaxes qu'on aurait eu tendance à utiliser.

Toutefois je perçois les limites du système, car l'outil me laisse écrire :


alert(document.getElementById("lstLanguage").ListItem(1).Value);


ton truc visé n'a pas d'id !
Fx n'en voudra donc pas
IE toujours aussi laxiste confond 'name' et 'id' donc ça passe pour lui
à ce niveau

Quant à ListItem ... je suis pas certain que ce soit comme ça qu'on s'en
sert.
Si toutefois ça l'est ... il y a-t-il un 2ième option à ton select ?
Oui, bon, donc soit IE ne connait pas, soit c'est mal utilisé, soit voir
+ bas.

On passe donc au déboggage suivant :
<http://www.google.fr/search?q=ListItem>
J'ai comme idée qu'on traite là du XML ? et non pas du DOM.
SelfHtml ne connait pas 'listitem'
<http://fr.selfhtml.org/navigation/recherche/index.htm>

pour afficher la première ligne d'une liste déroulante qui s'appelle
lstLanguage, or Firefox me dit que ListItem has no properties, et IE me
dit que getElementById(...).ListItem.1 a la valeur null ou n'est pas un
objet.


non, c'est une collection, et avec un peu de chance :

alert(document.getElementsByName("lstLanguage")[0].options[1].value)
alert(document.getElementsByName("lstLanguage").item(0).options[1].value)
alert(document.getElementsByName("lstLanguage")[0].LisItem(1).value)

y en aura bien un qui va fonctionner, espère-je

Pour ce qui est de l'accusation que l'objet n'existe pas, voici le code
HTML après sérieuse correction de l'indentation :

<select name="lstLanguage"
onchange="javascript:setTimeout(
'__doPostBack('ctl00$lstLanguage','')', 0)"
id="lstLanguage">

<option value="en">With a script, you can display in English</option>
<option selected="selected" value="fr">Fran&#231;ais</option>

</select>


J'ai eu la tentation d'enlever le mot Value et ça ne s'est guère avéré


ce n'est pas 'Value' mais 'value'
peut-être n'est-ce que ça qui perturbe IE ?

probant.

Bon, ben vous savez quoi ? Je vais faire une pause ...
Après je ferai la validation XHTML, ça fera une source de soucis de
syntaxe en moins.
Toutefois si une grosse gourance vous est plus évidente qu'à moi ...


Un élément qui n'a pas d'ID ne peut être atteint avec

getElementById
^^^^

Ce n'est pas 'Value' mais 'value'

Le déboggueur ne peut relever la gourance Value/value
car tu peux bien avoir affecté à ton objet une propriété 'Value'

--
sm


Avatar
SAM
Gloops a écrit, le 06/04/2008 07:33 :
alert(document.getElementById("lstLanguage").ListItem(1).Value);


En réalité, ça me cause plus avec des crochets :

alert(document.getElementById("lstLanguage").Item[1].Value);

et c'est d'ailleurs la syntaxe que j'ai essayée et qui a donné les
réponses indiquées, tant avec Item qu'avec ListItem.



Boudiou !
l'ID m'avait échappé :-(
faut dire c't'idée de tout ranger dans l'désordre ...

à la limite peut-être que :

alert(document.getElementById("lstLanguage")[1].value)

et si c'est le 1er formulaire de la page :
alert(document.forms[0].lstLanguage[1].value)

alert(document.forms[0].lstLanguage.value)
devrait renvoyer la valeur de l'option sélectionnée

alert(document.forms[0].lstLanguage.text)

--
sm


Avatar
SAM

Boudiou !
l'ID m'avait échappé :-(
à la limite peut-être que :


Alors, pour Firefox :

alert(document.getElementById('lstLanguage').ListItem)
renvoie 'undefined' donc 'ListItem' = 'inconnu'
(mais ... ça pourrait être une propriété personnelle ajoutée)

alert(document.getElementById('lstLanguage').item)
renvoie : function native code
Ha! y a un mieux !

donc :
alert(document.getElementById('lstLanguage').item(1))
devrait renvoyer le 2ième option
et
alert(document.getElementById('lstLanguage').item(1).value)
renvoie sa valeur

Comme de juste :
alert(document.getElementById('lstLanguage').item(1).Value)
renvoie 'undefined'

Bien entendu, la notation courte fonctionne aussi :
alert(document.getElementById('lstLanguage')[1].value)

Tout autant qu'en passant par l'arbre des forms :
alert(document.forms[0]['lstLanguage'][1].value)
alert(document.forms[0].lstLanguage[1].value);
alert(document.forms['monForm'].lstLanguage[1].value)
alert(document.monForm.lstLanguage[1].value);

Vu la multiplicité des possibilités de codage de la même chose, le
déboggueur a du boulot à réussir à s'y retrouver.


Quand on en est au déboggage on prend des précautions du style :

if(document.getElementById &&
document.getElementById('lstLanguage') &&
document.getElementById('lstLanguage').item &&
document.getElementById('lstLanguage').item(1) &&
document.getElementById('lstLanguage').item(1).value )
alert(document.getElementById('lstLanguage').item(1).value);

au moins la console d'erreur de Firefox indiquera à quelle ligne est
l'erreur et on saura lequel des trucs merdoie.
- id 'lstLanguage'
- item (ou Item ou ListItem ou Listitem ou listitem ...)
- item(1) (ou item[1] suivant qu'on ait gaffé ou non)
- value (ou Value)


--
sm

Avatar
Gloops
SAM a écrit, le 06/04/2008 15:10 :
ton truc visé n'a pas d'id !


C'est-à-dire qu'il n'est pas très lisible car le onchange prend pas m al
de place, mais si tu regardes bien la dernière ligne de la balise selec t ...


Je la remets sans compactage, on voit peut-être mieux contrairement à ce
que je croyais :

<select name="lstLanguage"
onchange="javascript:setTimeout('__doPostBack('ctl00$lstLanguage',' ')',
0)"
id="lstLanguage">
^^ c'est bien de ça qu'on parle ?

Il y a bien à la fois name et id, de manière à être entendu par l es deux
cloches (avec les deux sons, je veux dire ;) )

Fx n'en voudra donc pas
IE toujours aussi laxiste confond 'name' et 'id' donc ça passe pour l ui
à ce niveau

Quant à ListItem ... je suis pas certain que ce soit comme ça qu'on s'en
sert.


Il m'a bien semblé au vu des résultats qu'il y avait un doute à ce propos.

Si toutefois ça l'est ... il y a-t-il un 2ième option à ton selec t ?


Oui, la première a pour texte "With a script, you can display English",
et la deuxième a pour texte "Français".

D'ailleurs, comme les options sont numérotées à partir de zéro, c 'est la
deuxième qu'aurait retourné ma syntaxe si elle avait été correcte par
ailleurs, j'ai réalisé la bévue ce matin.

Oui, bon, donc soit IE ne connait pas, soit c'est mal utilisé, soit v oir
+ bas.

On passe donc au déboggage suivant :
<http://www.google.fr/search?q=ListItem>
J'ai comme idée qu'on traite là du XML ? et non pas du DOM.


Si je ne m'abuse, le DOM est aussi appelé DHTML et éligible à la no rme
XHTML donc XML ? Enfin peut-être que je vais vite en besogne, là.

SelfHtml ne connait pas 'listitem'
<http://fr.selfhtml.org/navigation/recherche/index.htm>


C'était Item, alors, que j'ai sorti de chez eux.
Et le ListItem ... à la limite ce qui importe est moins de savoir d'où
je l'ai sorti que si c'est vraiment ça qu'il faut utiliser ou pas, le
résultat induit un sérieux doute, mais il est vrai que je n'ai pas
encore la bonne syntaxe à ce stade.


pour afficher la première ligne d'une liste déroulante qui s'appel le
lstLanguage, or Firefox me dit que ListItem has no properties, et IE
me dit que getElementById(...).ListItem.1 a la valeur null ou n'est
pas un objet.


non, c'est une collection, et avec un peu de chance :

alert(document.getElementsByName("lstLanguage")[0].options[1].value)
alert(document.getElementsByName("lstLanguage").item(0).options[1].valu e)
alert(document.getElementsByName("lstLanguage")[0].LisItem(1).value)

y en aura bien un qui va fonctionner, espère-je



Au moins, ça a ça de bien, ce que tu me dis là, que ça retourne u n
résultat. On a la valeur, alors si on veut l'intitulé j'aurais tendan ce
à essayer Text.

Donc, la façon dont j'ai mis l'id n'est pas reconnue.
Qu'y-a-t-il à redire dessus ?
<select name="lstLanguage"
onchange="javascript:setTimeout(
'__doPostBack('ctl00$lstLanguage','')', 0)"
id="lstLanguage">



Bon en tout cas tu m'as refilé une syntaxe qui permet bien d'obtenir le
contenu des options (sous Firefox du moins, je vais casser une graine
avant de m'occuper de IE), à condition de bien écrire, comme tu l'as
d'ailleurs mentionné, options et value avec des majuscules.
Donc, ça va marcher de ce côté, merci mille fois.

Je vais voir si IE s'en sort bien avec l'id, il me semblait justement
que c'était Firefox qui s'en sortait bien avec ?


Avatar
SAM
SAM a écrit, le 06/04/2008 15:10 :
ton truc visé n'a pas d'id !


C'est-à-dire qu'il n'est pas très lisible car le onchange prend pas mal
de place, mais si tu regardes bien la dernière ligne de la balise select
...


bon y a eu un post rectificatif depuis

On passe donc au déboggage suivant :
<http://www.google.fr/search?q=ListItem>
J'ai comme idée qu'on traite là du XML ? et non pas du DOM.


Si je ne m'abuse, le DOM est aussi appelé DHTML et éligible à la norme
XHTML donc XML ? Enfin peut-être que je vais vite en besogne, là.


D'un côté DOM HTML
de l'autre XML

de ttes façons, perso, je ne connais pas ce ListItem
Si d'autres connaissent ?

alert(document.getElementsByName("lstLanguage")[0].options[1].value)
alert(document.getElementsByName("lstLanguage").item(0).options[1].value)
alert(document.getElementsByName("lstLanguage")[0].LisItem(1).value)


Au moins, ça a ça de bien, ce que tu me dis là, que ça retourne un
résultat. On a la valeur, alors si on veut l'intitulé j'aurais tendance
à essayer Text.


Non, pareil que 'value', c'est : 'text' sans *T*

Donc, la façon dont j'ai mis l'id n'est pas reconnue.
Qu'y-a-t-il à redire dessus ?


non c'est moi qui ait mes carreaux sélectifs (et l'id à la fin a été
zappé à la lecture visuelle)

Les alertes ci-avant sont un autre éclairage en se fixant sur le name
cette fois (utile pour des radios-boutons par exemple)
Ce sont des exemples à essayer pour voir si l'un d'eux fonctionne.
(j'adore l'apprentissage par essais et erreurs et je file facilement des
contre-exemples non fonctionnels)


Bon en tout cas tu m'as refilé une syntaxe qui permet bien d'obtenir le
contenu des options (sous Firefox du moins, je vais casser une graine
avant de m'occuper de IE), à condition de bien écrire, comme tu l'as
d'ailleurs mentionné, options et value avec des majuscules.


Meuh NON ! *avec des minuscules !* *avec des MINUSCULES !*

Je vais voir si IE s'en sort bien avec l'id, il me semblait justement
que c'était Firefox qui s'en sortait bien avec ?


IE est complètement débile mais il doit s'en sortir tout aussi bien
(avec ce que donné dans le post qui suivait en position 2)

Voir mes autres posts correctifs.

--
sm


Avatar
Gloops
SAM a écrit, le 06/04/2008 20:05 :

Donc, la façon dont j'ai mis l'id n'est pas reconnue.
Qu'y-a-t-il à redire dessus ?


non c'est moi qui ait mes carreaux sélectifs (et l'id à la fin a é té
zappé à la lecture visuelle)



Ce qui m'ennuie davantage, c'est que les navigateurs l'ont zappé aussi.
Comme ça marche avec GetElementsByName (et que la syntaxe semble
convenir à la fois à IE et à Firefox, ce qui n'est pas un mince
résultat) je ne vais pas nécessairement passer beaucoup de temps dess us
tout de suite, mais ça me laisse quand même l'impression que c'est bi zarre.

IE est complètement débile


ça, il paraît, mais avec ma façon de nommer et d'utiliser les minus cules
et majuscules, j'ai l'impression que je ferais aussi bien d'attendre un
autre jour pour me moquer :)

mais il doit s'en sortir tout aussi bien
(avec ce que donné dans le post qui suivait en position 2)


J'ai effectivement réussi à écrire le script que je voulais. Merci
encore. Maintenant il me reste à me dépatouiller avec le préfixe qu e le
serveur ajoute devant le nom du contrôle, mais ça, ce n'est plus du
Javascript.


Voir mes autres posts correctifs.



Apparemment maintenant nous sommes d'accord, alors je ne fais pas le
détail des correctifs.


Avatar
Gloops
A propos de SciTE, on trouve un utilisable tout prêt, utilisable sur
Windows, là :

http://dfn.dl.sourceforge.net/sourceforge/scintilla/Sc176.exe

Pour la liste des propriétés possibles (ressemblant à ce que Micros oft
appelle l'Intellisense), il convient de taper au moins la première
lettre, puis Ctrl Entrée, c'est là qu'on a la liste des propriété s
commençant par cette lettre.

Bonne façon d'éviter de taper avec une majuscule ce qui doit l'être avec
une minuscule, par exemple.

Je ne saurais dire si c'est vraiment exhaustif, mais en tout cas ça
reconnaît la syntaxe dont il a été question dans ce fil.

ça marche pour Javascript, et aussi pour un certain nombre d'autres
langages.

Ce n'est pas SciTE qui va vous rappeler (contrairement, dans une
certaine mesure, à l'Intellisense, on a beau critiquer Microsoft ...),
si jamais ça vous échappe, que GetElementsByName retourne une collect ion
et GetElementByName un élément, raison pour laquelle l'un comporte un s
dans son nom et pas l'autre, mais ça évite quand même de s'aventure r sur
certains terrains inexistants.
Avatar
SAM
SAM a écrit, le 06/04/2008 20:05 :

Donc, la façon dont j'ai mis l'id n'est pas reconnue.


non c'est moi qui ait mes carreaux sélectifs (et l'id à la fin a été
zappé à la lecture visuelle)


Ce qui m'ennuie davantage, c'est que les navigateurs l'ont zappé aussi.


Ha! Non ! Ça ce n'est pas possible !
(ils ne portent pas de lunettes et sont studieusement très attentifs)

--
sm



Avatar
Nicolas Vasic
Hello SAM

SAM wrote:
Il y aurait aussi l'extension Firebug (pour Fx)
mais chez moi il refuse de tourner sur un fichier local :-(


Tu pourrais installer Apache?

Nicolas

Avatar
Nicolas Vasic
Hello YD

YD wrote:
Personnellement, je travaille avec l'éditeur à coloration
syntaxique SciTE.


J'utilise aussi SciTe: super! Il reconnait les syntaxes Perl, JS et HTML
(entre autres).

Seul défaut: les macros clavier inexistantes. Sauf si j'ai raté une étape.

Nicolas

1 2 3 4