![]() |
|
INITIATION
AU JAVA SCRIPT |
Il t'arrivera sûrement qu'après une modification
(correction?) de ton script, aucun changement ne soit visible à l'écran après avoir
fait "Reload" ou
"Actualiser". - Vérifie bien si tu as enregistré tes modifications
(cela arrive même aux meilleurs). - Il faut parfois recharger plus profondément ta page en
faisant Shift + Reload (sous Netscape) ou clique dans la zone de localisation du browser et fait
Enter. 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. Ton 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éécrits 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 compatibilité 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. A ce jour il est encore un peu tôt
pour se faire une idée précise mais il est déjà évident que Microsoft Explorer 4.0
intègre beaucoup mieux (ou très bien ?) le Javascript et Microsoft Explorer 5.0 permet
tous les espoirs ...
Mon script ne fonctionne pas dans un tableau
!
Javascript dans des tableaux, ce n'est pas une histoire
d'amour. On recommande dans la littérature de ne pas placer de tag <SCRIPT> dans des balises
<TD> mais plutôt de commencer le tag <SCRIPT> avant le tag <TD> et d'écrire le 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.
Ce qui donnerait :
<SCRIPT LANGUAGE="Javascript">
<!--
document.write("<TABLE BORDER=1>");
document.write("<TR>");
document.write("<TD>");
document.write("votre texte");
document.write("</TD>");
document.write("<TD>");
document.write("votre texte");
document.write("</TD>");
document.write("</TR>");
document.write("</TABLE>");
//-->
</SCRIPT>
En conclusion, au niveau débutant, évite de mettre du
Javascript dans des tableaux.
J'ajoute qu'il n'y a pas de problèmes pour les formulaires.
Mais est-ce vraiment du Javascript?...
Adapter le script selon le browser du lecteur
: avec les méthodes et propriétés de l'objet navigator
(voir ce chapitre), il y aura moyen de détecter le type et la version du browser. Ce qui
sera très utile pour adapter tes scripts au browser et à la version de celui-ci.
La compatibilité des pages Javascript avec les
différents types et versions en circulation pose vraiment problème. A l'avenir, on peut
espérer une mutation rapide vers Explorer 4 ou 5 pour les partisans de Microsoft et
l'abandon progressif de Netscape 2.0 et 3.0 pour des versions plus récentes. Ce qui
simplifiera grandement la situation.
Si tu n'es pas obnubilé par la compatibilité de tes pages de script (et les messages
d'erreurs qui risquent d'apparaître), il faut néanmoins être sympa et avertir tes
lecteurs. Ainsi, le petit script suivant informe les utilisateurs de Explorer 3.0 qu'ils
risquent de rencontrer quelques désagréments.
<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>
Pour des informations très complètes sur les
différentes versions de Javascript, je ne peux que te conseiller vivement
"JavaScript Object Road Map and Compatibility Guide", quatre feuillets que l'on
peut télécharger sur le site de Danny Goodman ("La" référence !) à
l'adresse www.dannyg.com.
Arrondir les nombres derrière la virgule
: il arrive que Javascript t'affiche un résultat de
division du type 1.599999999999999. Ce qui est assez disgracieux, j'en conviens. Parmi les différents
systèmes possibles , je te propose celui-ci : 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.
Devine pour 3 chiffres après la virgule...
Comment lire et écrire des fichiers en Javascript ?
il est impossible de lire un fichier ou d'écrire dans un
fichier en Javascript.
C'est sûrement très bien pour la sécurité de ton système mais c'est dommage pour, par
exemple, l'exploitation d'une base de données.
Ciel ! On voit mes sources Javascript
................ et oui, par "View
Document Source", le lecteur un peu initié pourra voir,
étudier, copier tes sources Javascript.
Il existe sur le net plusieurs petits programmes de codage des scripts, d'appels à des
fichiers dissimulés, etc.
Je suis arrivé à la conclusion qu'aucun système ne pourra garantir une confidentialité
absolue de tes scripts.
Si pour les entreprises, cela peut être gênant pour des données sensibles (mais il y a
alors d'autres techniques disponibles, je pense à du Java), pour les simples particuliers
on peut se demander si cela a vraiment de l'importance... Ne serais-tu pas un peu
paranoïaque ? Si oui, il y a toujours moyen de coder ton Javascript d'une façon
(presque) incompréhensible pour le programmeur moyen.
Transmettre des variables d'une page à l'autre
: tes variables sont définies dans le script de l'entité
que constitue ta page Web. Tu peux souhaiter continuer à utiliser ces variables dans une
autre page ou tout au long de ton 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. Et comme tous les browsers Javascript admettent des frames, pourquoi
s'en priver.
Les boutons radio me renvoient l'ordre inverse
: ce bug propre à Netscape 2 peut te jouer de grosses
surprises par exemple dans un formulaire de commande utilisant des boutons radio. En effet
si le bouton radio 1 d'une série de 3 est checked, c'est la valeur 3 qui est retournée.
Pour toi, le client a commandé une chemise Large alors qu'il souhaitait du Small !
Pour corriger ce bug, il te suffit d'ajouter un gestionnaire d'événement vide à chaque
contrôle de la série de boutons radio.
<FORM NAME="radioTest">
<INPUT TYPE="radio" NAME="test" VALUE="A"
onClick="">A
<INPUT TYPE="radio" NAME="test" VALUE="B"
onClick="">B
<INPUT TYPE="radio" NAME="test" VALUE="C"
onClick="">C
</FORM>