Chapitre 6 Les méthodes, les messages
d'erreurs...
6.1 Les methodes alert(), prompt(), confirm()
La méthode
alert() affiche une boite de dialogue dans
laquelle est reproduite la valeur (variable et/ou chaîne de
caractères) de l'argument qui lui a été fourni. Cette
boite bloque le programme en cours tant que l'utilisateur n'aura pas
cliqué sur "OK". Alert() sera aussi très utile pour vous aider
à débbuger les scripts. Sa syntaxe est :
alert(variable);
alert("chaîne de caractères"); alert(variable + "chaîne
de caractères");
Si vous souhaitez écrire sur plusieurs
lignes, il faudra utiliser le signe \n.
Dans le même style que la
méthode alert(), Javascript vous propose une autre boite de dialogue,
dans le cas présent appelée boite d'invite, qui est
composée d'un champ comportant une entrée à
compléter par l'utilisateur. Cette entrée possède aussi
une valeur par défaut. La syntaxe est : prompt("texte de la boite d'invite","valeur par
défaut");. En cliquant sur OK, la méthode renvoie la
valeur tapée par l'utilisateur ou la réponse proposée par
défaut. Si l'utilisateur clique sur Annuler ou Cancel, la valeur null
est alors renvoyée. Prompt() est parfois utilisé pour saisir des
données fournies par l'utilisateur. Selon certaines sources, le texte ne
doit cependant pas dépasser 45 caractères sous Netscape et 38
sous Explorer 3.0.
Cette méthode affiche 2
boutons "OK" et "Annuler". En cliquant sur OK, continue() renvoie la valeur
true et bien entendu false si on a cliqué sur Annuler. Ce qui peut
permettre, par exemple, de choisir une option dans un programme. La syntaxe de
l'exemple est : confirm("Voulez-vous continuer
?")
6.2 Une minuterie
Javascript met à votre
disposition une minuterie (ou plus précisément un compteur
à rebours) qui permettra de déclencher une fonction après
un laps de temps déterminé. La syntaxe de mise en route du
temporisateur est : nom_du_compteur =
setTimeout("fonction_appelée()", temps en milliseconde). Ainsi,
setTimeout("demarrer()",5000) va lancer la fonction demarer() après 5
secondes. Pour arrêter le temporisateur avant l'expiration du
délai fixé, il y a : clearTimeout(nom_du_compteur)
6.3 L'emploi de this
Pour désigner l'objet en
cours, Javascript met à votre disposition le mot-clé
this. Cette écriture raccourcie est souvent
utilisée en remplacement du chemin complet de l'objet dans un
formulaire. Par exemple, soit un script avec un formulaire :
<FORM NAME="form3">
<INPUT TYPE="radio" NAME="choix" VALUE="1">Choix numéro
1<BR> <INPUT TYPE="radio" NAME="choix" VALUE="2">Choix
numéro 2<BR> <INPUT TYPE="radio" NAME="choix"
VALUE="3">Choix numéro 3<BR> <INPUT
TYPE="button"NAME="but" VALUE="Quel et votre choix ?"
onClick="choixprop(form3)"> </FORM>
Au lieu d'employer
choixprop(form3), on aurait pu utiliser
choixprop(this.form) et éviter ainsi toute
confusion avec les autres noms de formulaires. Dans cet exemple, this.form
désigne le formulaire form3 complet. Par contre, choixprop(this)
n'aurait désigné que l'élément de type bouton du
formulaire form3. Pour être complet, this est utilisé aussi pour
créer une ou plusieurs propriétés d'un objet. Ainsi, pour
créer un objet livre avec les propriétés auteur,
éditeur et prix cette opération peut être effectuée
à l'aide de la fonction :
function livre(auteur,
editeur, prix) { this.auteur = auteur; this.editeur = editeur;
this. prix = prix; }
6.4 Les types d'erreurs
On ne peut pas dire que les outils
de débuggage offerts par Javascript soient des plus
évolués. En effet, on ne peut se fier à 100% aux
précisions données par l'interpréteur. Le "Javascript
Error line x" est plutôt à comprendre comme "ça commence
à foirer à la ligne x" et il sera parfois nécessaire de
remonter de plusieurs lignes dans le script pour trouver l'erreur initiale. Il
y a 3 grandes catégories d'erreurs dans l'utilisation d'un programme
Javascript : les erreurs au chargement, les erreurs à
l'exécution, les erreurs de logique.
Au chargement du script par le
browser, Javascript passe en revue les différentes erreurs qui
peuvent empêcher le bon déroulement de celui-ci. Les erreurs au
chargement, nombreuses lors de l'apprentissage de Javascript, sont souvent dues
à des fautes de frappe et/ou des erreurs de syntaxe. Pour vous aider
à déterminer l'erreur, Javascript affiche sa boite de message
d'erreur, vous indique le problème et le texte de l'erreur. Ne perdez
pas de vue que Javascript ne vous indique pas toujours l'erreur
véritable et que selon l'erreur, celle-ci peut se situer bien plus avant
dans le script. Des exemples classiques d'erreurs au chargement sont des
parenthèses ou des accolades non fermées, des guillemets
manquants, etc.
Les erreurs à
l'exécution: ici votre script se charge sans problème, mais
une boite de message d'erreurs apparaît lorsque l'exécution du
script est demandée. Alors que les erreurs au chargement
étaient surtout dues au mauvais usage de la syntaxe, les erreurs
à l'exécution proviennent d'un mauvais usage des commandes ou des
objets Javascript. Un exemple d'erreur à l'exécution est un appel
erroné à un une variable ou une fonction inexistante (car il y a,
par exemple, une erreur dans le nom de la variable ou de la fonction).
Les erreurs de logique sont
les plus vicieuses car le "débuggeur" de Javascript ne signale bien
entendu aucune erreur et votre script se déroule correctement. A
l'arrivée, le résultat ne correspond pas à celui
espéré. Il n'y a plus qu'à revoir la construction logique
de votre script. De nombreuses erreurs de logique sont dues à des
valeurs de variables incorrectes.
Quelques conseils : dans le cas
où l'utilisateur doit entrer une valeur, celle-ci était-t-elle au
bon format? N'est-il pas utile de prévoir un petit script pour
vérifier le format d'entrée ? On peut ajouter des points de
contrôle de valeur de variable ou de passage avec l'instruction
alert(variable) ou alerte("Point de passage1").
6.5 Les grands classiques des erreurs
On peut dresser une liste d'erreurs
que tous les débutants (et même certains plus confirmés)
font ou feront tôt ou tard :
Soyez vigilant au nom des variables
(case sensitive). Mavariable et mavariable sont deux variables distinctes.
Eviter d'utiliser des noms de variables trop rapprochants.
Le nom de la fonction a-t-il bien la
même orthographe dans la déclaration et dans l'appel. Le nom des
fonctions est-il bien unique dans le script?
N'oubliez pas les guillemets ou
apostrophes avant et après les chaînes de caractères.
·Avez-vous bien mis des virgules entre vos différents
paramètres ou arguments?
Avez-vous placé vos accolades
au bon endroit sans avoir oublié de les fermer (surtout dans le cas de
blocs de commandes imbriquées).
Assurez-vous que les noms des objets
Javascript sont corrects. Le piège est que les objets Javascript
commencent par une majuscule (Date, Math, Array...) mais que les
propriétés commencent par une minuscule (alert).
La confusion entre =
opérateur d'affectation et == opérateur de comparaison
Finalement, débugger du
Javacript n'est pas toujours la joie mais avec l'habitude de ce genre
d'exercice, on s'en sort assez bien. Conscient de ce réel
problème, on semble mettre au point chez Netscape et Microsoft des
débuggeurs.
6.6 Pas de changement après modification du
script
Il vous arrivera sûrement
qu'après une modification et/ou correction de votre script, aucun
changement ne soit visible à l'écran après avoir fait
"Reload" ou "Actualiser". Vérifier bien si vous avez enregistré
vos modifications. Il faut parfois recharger plus profondément votre
page en faisant Shift + Reload (sous Netscape) ou cliquez dans la zone de
localisation du browser et faire Enter.
6.7 Le cas Microsoft Internet Explorer 3.0
Microsoft Explorer 3.0 supporte une
forme de Javascript. Microsoft a implanté le langage Javascript
séparément et indépendamment de Netscape. Internet
Explorer "comprend" le code Javascript, mais son implémentation n'est
pas complète. Il faut garder cela à l'esprit lorsque on veut
écrire du code Javascript qui doit fonctionner à la fois sous
Netscape et Explorer 3.0. Votre code Javascript sous Explorer doit
-
impérativement être du Javascript
1.0. Toutes les fonctions Javascript 1.1, si familières pour Netscape 3,
entraîneront des messages d'erreur.
-
ne pas faire appel à des applications
Javascript sophistiquées.
-
s'armer de patience car certains codes
Javascript élémentaires fonctionnant à merveille sous
Netscape, devront être réécrit avec une syntaxe plus
stricte.
Pour corser le tout, Microsoft
conscient des lacunes de son browser, a sorti une évolution de son
interpréteur Javascript. On voit ainsi apparaître fin 97, une
JScript.dll version 2. Celle-ci apporte une meilleure compatibilté avec
Netscape 3 (comme les objets Array (les tableaux)). Comprendre Explorer 3.0 et
Javascript n'était déjà pas simple mais nous voilà
maintenant avec du Javascript sous Explorer 3.0 avec la JScript.dll version 1
et la JScript.dll version 2! Quel plaisir ...
Pour Microsoft Explorer 4.0,
celui-ci adhère strictement au standard appelé ECMAScript, qui
couvre essentiellement la version Javascript 1.1.
6.8 Le script ne fonctionne pas dans un tableau
On recommande de ne pas placer de
tag <SCRIPT> dans des balises <TD> mais plutôt de commencer
le tag <SCRIPT> avant le tag <TD> et de tout écrire, du tag
<TD> jusqu'au tag </TD>, par une écriture
document.write. Et même, pour être sur
de son coup, d'écrire tout la tableau avec le document.write. En
conclusion, au niveau débutant, éviter de mettre du Javascript
dans des tableaux. Ajoutons qu'il n'y a pas de problèmes pour les
formulaires.
6.9 Adapter le script selon le browser du lecteur
Avec les méthodes et
propriétés de l'objet navigator, il y aura moyen de
détecter le type et la version du browser. Ce qui sera très utile
pour adapter vos scripts au browser et à la version de celui-ci.
<SCRIPT LANGUAGE =
"JavaScript"> <!-- var name = navigator.appName ; if (name
== 'Microsoft Internet Explorer') { document.write('Attention! Vous
utilisez Microsoft Explorer 3.0.') <BR>'); document.write('Avec ce
browser, certains scripts peuvent ne pas fonctionner correctement'); }
else { null } //--> </SCRIPT>
6.10 Arrondir les nombres derrière la
virgule
Il arrive que Javascript vous
affiche un résultat de division du type 1.599999999999999. Une des
solutions possibles pour éviter ceci : variable=
Math.round (variable*100)/100. Ainsi, 1.599999 est multiplié par
100 ce qui fait 159.9999. La méthode Math.round (159.9999) donne 160,
qui divisé par 100 fait 1.60. Avec ...*100)/100, on obtient 2 chiffres
après la virgule.
6.11 Transmettre des variables d'une page à
l'autre
Vos variables sont définies
dans le script de l'entité que constitue votre page Web. Vous pouvez
souhaiter continuer à utiliser ces variables dans une autre page ou tout
au long de votre site. Comment faire? La solution est d'utiliser des frames.
Javascript permet de passer des variables d'un frame vers des objets
appartenant à un autre frame. |