1) Généralités

Netscape, IE, Mozilla, Opera ... au gré de leurs versions successives, ne sont pas conformes aux mêmes spécifications. Les différences sont nombreuses et l'écriture de programmes multi-navigateurs est un travail titanesque limite sisyphéen. La version 1.3 de JavaScript (conforme à la norme 262 de l'ECMA) est, en principe, supportée par tous les navigateurs.
Pour des raisons de sécurité, le langage ne peut pas accéder à la mémoire vive ou aux fichiers de machine de l'utilisateur. L'écriture est étroitement limitée à des fichiers-textes (cookies). Un script ne peut pas intervenir sur une autre page que celle qui le contient.
Insertion d'un script
La balise <SCRIPT></SCRIPT> peut être placée n'importe où dans un document. Ses attributs sont LANGUAGE : nom du langage, TYPE : type MIME (Multipurpose Internet Mail Extensions), SRC : nom du fichier source, CHARSET : référence ISO du jeu de caractères.
<SCRIPT language="javascript" type="text/javascript" src="script.js" charset="iso-8859-1">

2) Syntaxe

La syntaxe est calquée sur celle de Java (C++) sans la rigueur imposée par la compilation.
Les commentaires sont annoncés par deux slashes (//) ou compris entre /* et */
Le point virgule (;) est le séparateur d'instructions. Son absence ne déclenche pas de d'erreur si l'instruction occupe seule une ligne physique. Les accolades { } regroupent une suite d'instructions en un bloc unique.
JavaScript est sensible à la casse (case sensitive) c'est à dire que le mot CodePostal est différent de Codepostal et de codepostal. Attention aux noms de variables !

3) Types de données

Number
C'est le seul type numérique pur. Il est inutile de déclarer un nouvel objet Number.

Opérateurs arithmétiques
affectation a = b somme a = a + b différence a = a - b produit a = a * b
quotient a = a / b reste entier a = a % b préincrémentation a = ++b posincrémentation a = b++
prédécrémentation a = --b postdécrémentation a = b--    
Opérateurs logiques
ou logique a = a | b et logique a = a & b ou exclusif a = a ^ b opposé a = -a
Opérateurs de décalages
à gauche a = a << 1 à droite a = a >> 1 avec signe à droite a = a >>> 1 sans signe
Opérateurs associatifs
a += b a -= b a *= b a /= b a %= b a &= b
a |= b a ^= b a <<= b a >>= b a >>>= b

 

Opérateurs de comparaisons
a = = b a != b a > b a < b a >= b a <= b
Propriétés et méthodes des objets Math et Number
Math.E Math.LN10 Math.LN2 Math.LOG10E Math.LOG2E Math.PI
Math.SQRT1_2 Math.SQRT2 Math.abs() Math.acos() Math.asin() Math.atan()
Math.ceil() Math.cos() Math.exp() Math.floor() Math.log() Math.max()
Math.min() Math.pow() Math.random() Math.round() Math.sin() Math.sqrt()
Math.tan() Number.MAX_VALUE Number.MIN_VALUE Number.NaN
Number.NEGATIVE_INFINITY Number.POSITIVE_INFINITY    
Conversions en chaîne de caractères
a.toString() - décimal a.toString(2) - binaire a.toString(16) - hexadécimal

Date
C'est le nombre de millisecondes écoulées depuis le 1er janvier 1970 à 0 heures. La date prise en compte est celle de l'ordinateur. Il faut créer une nouvelle instance de l'objet Date avant de l'utiliser.
var Date1 = new Date(); ou Nais = new Date(74, 02, 02);

Méthodes des dates
.getDate() [.set] .getDay() .getFullYear() [.set] .getHours() [.set] .getMilliseconds() [.set]
.getMinutes() [.set] .getMonth()  [.set] .getSeconds() [.set] .getTime() [.set] .getTimezoneOffset()
.getUTCDate() [.set] .getUTCDay() .getUTCFullYear() [.set] .getUTCHours() [.set] .getUTCMilliseconds() [.set]
.getUTCMinutes() [.set] .getUTCMonth() [.set] getUTCSeconds() [.set] Date.parse() .toLocaleString()
.toString() .toUTCString() Date.UTC()    

String
C'est une chaîne de caractères qui peut être vide. Il est inutile de déclarer un nouvel objet String. Pour délimiter les chaînes de caractères on utilise indifféremment la simple (') ou la double (") quote.
var Texte1 = "Des parasites me brouillent l'écoute.";

Propriété
Texte1.length
Méthodes des chaînes
.big() .blink() .bold() .charAt() .charCodeAt() .concat()
.fixed() .fontcolor() .fontsize() .fromCharCode() .indexOf() .italics()
.lastIndexOf() .match() .replace() .search() .slice() .small()
.split() .strike() .sub() .substr() .substring() .sup()
.toUpperCase() .toLowerCase() parseInt(Texte1) parseFloat(Texte1)    
Opérateur de concaténation
Texte1 = Texte1 + " C'est pas marrant."; et les mêmes opérateurs de comparaisons que les nombres.

Boolean
Deux valeurs possibles true ou false. Il est inutile de déclarer un nouvel objet Boolean.
Ces objets peuvent recevoir le résultat d'une comparaison, d'un test ou de l'exécution d'une fonction.
var Juste = (a > b);

Opérateurs et méthode
!Juste négation Juste = false affectation && et logique || ou logique .toString()

Array
Un tableau est une collection d'objets ordonnés. Les éléments d'un tableau sont repéré par un indice à partir de zéro ou par des chaînes de caractères. On n'est pas obligé de définir la taille d'un  tableau lors de sa création. Un tableau peut contenir n'importe quel type d'objets et en particulier d'autres tableaux (tableaux à plusieurs dimensions). On accède aux données d'un tableau par un indice entre crochets [ ]. Il faut créer une nouvelle instance de l'objet Array avant de l'utiliser.
var Groupe1 = new Array();

Propriété
Groupe1.length
Méthodes des tableaux
.concat() .join() .pop() .push() .reverse() .shift()
.slice() .sort() .splice() .toString() .unshift()  

Exemples de types, d'opérateurs, de méthodes

Calculs 1 : Le Fichier1 montre l'utilisation de quelques opérateurs.
Calculs 2 : Le Fichier2 montre quelques fonctions de l'objet Math.
Dates : Le Fichier3 montre quelques fonctions de l'objet Date.
Chaînes : Le Fichier4 montre des manipulations de chaînes.
Tableaux : Le Fichier5 montre l'utilisation de tableaux.

4) Structures de contrôles

Alternatives (Utilisez le = = pour les tests)

if / else Opérateur ? switch (Attention au break)
if (Booléen) {
Instructions Vrai; }
else {
Instructions Faux; }
T=(N>1) ? "chevaux":"cheval"; switch (Variable) {
case Valeur1 : Instructions;
break;
case Valeur2 : Instructions;
break;
default : Instructions; }

Itératives (Utilisez le = = pour les tests) 

for while do / while
for (i=1; i<10; i++) {
Instructions; }
while (Booléen) {
Instructions Vrai; }
do {
Instructions; }
while (Booléen);

break permet une sortie de boucle avant que la condition terminale soit atteinte
continue permet d'ignorer une partie de la boucle sans en sortir
for / in permet de parcourir les propriétés d'un objet ou les éléments d'un tableau.
Autres fonctions et mots clés
with permet de préfixer le nom d'un objet dans les instructions du bloc qui suit
this mot clé qui permet de se référer implicitement à l'objet en cours
eval() permet d'exécuter une chaîne de commande
isFinite() permet de savoir si un nombre est utilisable
isNaN() permet de savoir si une expression est un nombre

5) Variables et fonctions

Constantes
Nous avons déjà rencontré des constantes systèmes comme Math.PI, true, false, NULL
octal : 0125 , hexadécimal : 0x12AF , réel : 1.128E-3
Dans les chaînes de caractères et les expressions régulières on peut utiliser :

\n \f \t \r \v \" \' \\
Saut de ligne Saut de page Tabulation Retour chariot Tabul. Vertic. Guillemet Apostrophe antislash

  Variables
Le mot var n'est pas obligatoire mais fortement conseillé. L'affectation peut être faite pendant la déclaration
var Prix = 40.50, Nom = "pomme";
Une variable globale porte sur (est utilisable dans) tout le document, une variable locale à l'intérieur d'une fonction seulement.
Il est préférable de créer (avec var) les variables globales dans l'en-tête du document.
Les variables locales sont créées comme argument d'une fonction ou par déclaration (avec var) à l'intérieur de la fonction.
On peut alors faire coexister deux variables de même nom (mais est-ce bien nécessaire ?).
Procédures et fonctions
Une fonction est déclarée par le mot function.
Lors de son appel elle peut (ou non) recevoir des arguments.
Elle peut (ou non) retourner un résultat.

Propriétés des fonctions
.arguments[ ] .arguments.length .arity .caller .prototype

Exercices sur les fonctions

Fonction sans argument : Le Fichier6 est un exemple très simple de fonction.
La fonction bonjour() affiche "Bienvenue" et écrit "Bonjour".
Fonction avec argument : Le Fichier7 est un exemple de fonction avec argument.
La fonction bonjour(truc) affiche "Bienvenue" et écrit "Bonjour" en ajoutant le nom qui a été donné.
Fonction avec retour : Le Fichier8 est un exemple de fonction rendant un résultat.
La fonction Calcule() affiche la moyenne des nombres du formulaire.

6) Divers

Expressions régulières
Elles créent des modèles compilés qui permettent d'effectuer des recherches dans des blocs de texte. Une expression régulière est une chaîne (plus ou moins codée) affectée entre / (slash) à une variable
var Cherche = /Monsieur/;
ou déclarée comme une instance de l'objet RegExp
var Cherche = new RegExp("Monsieur");
Attention aux majuscules et minuscules. Les caractères utilisés dans le codage doivent être précédés de \ (\. point, \/ slash) pour être pris au premier degré.

Symboles utilisés dans les expressions régulières
g Recherche globale /mot/g ou new RegExp("mot","g")
i Sans distinction de casse /Truc/i ou new RegExp("Truc","i")
^ Au début /^con/ trouve contenu mais pas inconnu
$ A la fin /il$/ trouve avril mais pas imbécile
* Zéro ou plusieurs fois /10*/ trouve les puissances positives de 10 (à partir de 1)
? Zéro ou une fois (optionnel) /chiens?/ trouve chien ou chiens
+ Une ou plusieurs fois /el+e/ trouve ele, elle, ellle ...
{n} Répété n fois /6{3}/ trouve 666
{n,} Répété n fois ou plus /10{3,/ trouve les puissances de 10 à partir de mille
{n, m} Répété de de n à m fois /10{3, 6} trouve les puissances de 10 entre mille et un million
( ) Zone dans le modèle /Java(Script)?/ trouve Java ou JavaScript
| Ou /css|dhtml/ trouve css ou dhtml ou les deux
. Tout caractère /essai./ trouve essai1, essaiA, ...
[xyz ] Un des caractères entre /[Cc]ha[iî]ne]/ trouve Chaine, chaîne, Chaîne, chaîne
[^xyz] Aucun des caractères entre /version1\.[^123]/ trouve version1.4 ...
\b Limite de mot /x\b/ trouve aux mais pas axe
\B Intérieur de mot /x\B/ trouve axe mais pas aux
\d Un chiffre /\d99/ trouve 199, 299 ...
\D Pas un chiffre /1\D03/ trouve 1.03, 1-03, ...
\s Un espace /\s/ trouve espace, tabulation, saut de ligne ...
\S Pas un espace /pipe\Sline/ trouve pipe.line, pipe-line mais pas pipe line
\w Lettre, chiffre ou _ /essai\w/ trouve essai1, essaiA et essai_ mais pas essai#
\W Ni lettre, ni chiffre, ni _ /essai\W/ trouve essai#, essai@ et essai+ mais pas essai_
[a-z] Plage /N[a-z]N/ trouve NaN, NpN mais pas NON, ...
Propriétés et méthodes de RegExp
.$1 à .$9 Résultats de la recherche .$_ ou .input Texte original
.$& ou .lastMatch Dernière occurence .$+ ou .lastParen Dernière expression entre ( )
.$` ou .leftContext A gauche de la partie trouvée .$' ou .rightContext A droite de la partie trouvée
.exec() Applique une expression .test() Rend vrai si trouvé
.toString() .replace .compile() .split

  Le DOM et les objets de JavaScript

Objets du noyau (voir types de données)
Array Tableaux Boolean Booléens Date Dates
Function Fonctions Math Math Number Nombres
Object Objets RegExp Expressions régulières String Chaînes
Objets de "window" et objets natifs
document - 1 Document affiché frames Tableau des cadres history - 2 Navigation
location - 3 URL courante navigator - 4 Navigateur screen - 5 Ecran
Propriétés de l'objet window
closed defaultStatus innerHeight innerWidth length name outerHeight outerWidth
pageXOffset pageYOffset screenLeft screenTop screenX screenY status  
Méthodes de l'objet window
alert() back() blur() clearInterval() clearTimout() close() createPopup()) focus(
home() moveTo() open() resizeTo() setActive() setInterval() setTimeout() stop()
Événements de l'objet window
onBlur onDragDrop onError onFocus onLoad onMove onResize onUnload
1 - Objets de "document"
all Tout le document anchor Lien interne
applet Applet area Zone d'image réactive
form - 1.1 Formulaire image - 1.2 Image
layer Calque link - 1.3 Lien hypertexte
Propriétés de l'objet document
alinkColor anchors applets bgColor classes cookie domain embeds
fgColor forms height ids images lastModified layers links
location plugins referrer tags title URL vlinkColor width
Méthodes de l'objet document
captureEvents() releaseEvents() getSelection() close() write()
handleEvent() routeEvents() clear() open() writeln()
Événements de l'objet document
onClick onDblClick onKeyDown onKeyPress onKeyUp onMouseDown onMouseUp
1.1 - Objets de "form"
button Bouton checkbox Case à cocher
fileUpload Téléchargement de fichier hidden Texte caché
option Elément d'un objet select password Champ mot de passe
radio Bouton radio reset Bouton reset
select Menu déroulant submit Bouton submit
text Champ de texte textarea Zone de texte multiligne
Propriétés de l'objet form
action elements encoding length method name target
Propriétés des objets button, fileUpload, hidden, reset, submit
form name type value
Propriétés des objets chekbox, radio
Les mêmes que button plus checked defaultChecked
Propriétés des objets password, text, textarea
Les mêmes que button plus defaultValue
Propriétés de l'objet select
form length name options selectedIndex type
Propriétés de l'objet option
defaultSelected selected text value
1.2 - Propriétés de l'objet image
border complete height hspace lowsrc
name prototype src vspace width
Événements de l'objet image
onAbort onError onKeyDown onKeyPress onKeyUp onLoad
1.3 - Propriétés de l'objet link
hash host hostname href pathname
port protocole search target text
2 - L'objet history - Propriétés
current length next previous
Méthodes de l'objet history
back() forward() go()
3 - L'objet location - Propriétés
hash host hostname href pathname port protocole search
Méthodes de l'objet location
reload() replace()
4 - Objets de "navigator"
mimeType Type MIME plugin Plugin
Méthodes de l'objet navigator
javaEnabled() plugins.refresh() preference()
Propriétés de l'objet navigator
appCodeName appName appVersion language mimeTypes platform plugins userAgent
Propriétés de l'objet mimeType
description enabledPlugin suffixes type
Propriétés de l'objet plugin
description filename length name
Exercice : Le Fichier9 montre les informations fournies par votre navigateur.
5 - L'objet screen - Propriétés
availHeight availLeft availTop availWidth height pixelDepth width  

L'objet Event
Un événement correspond à une action de l'utilisateur détectée par le navigateur. Chaque événement est associé à un gestionnaire d'événements (event handler) capable de l'identifier et de le traiter. Il est possible de rediriger les événements vers des fonctions définies par l'utilisateur.
<form name = "form1" onSubmit = "envoyer()">
ou document.form1.onSubmit=envoyer; Sans parenthèses !
Netscape transmet l'objet event en paramètre au gestionnaire d'événements mais pas Internet Explorer. De plus Netscape dispose d'un certains nombres de méthodes (captureEvents(), releaseEvents(), routeEvent() et handleEvent()) qui permettent de contrôler le déroulement des événements.

Gestion d'un événement dans Navigator et IE (Voir)
<form name="form1">
<a href="#'><img src = "Echec.gif"></a>
<input type="text" name="Affiche">
</form> <script language = "JavaScript">
if (navigator.appName.indexOf("Netscape") != -1) {
 document.links[0].onmousedown = nav;
else
 document.links[0].onmousedown = ie; }
function nav(ev) {
 document.forms[0].Affiche.value = "(" + ev.layerX + "," + ev.layerY + ")";
 return false }
function ie() {
 ev = window.event;
 document.forms[0].Affiche.value = "(" + ev.clientX + "," + ev.clientY + ")";
 return false }
</script>
L'image Echec.gif est déclarée comme un (faux) lien.
Le formulaire form1 contient la zone de texte Affiche
On effectue le traitement de l'événement onMouseDown en fonction du navigateur reconnu
links[0] est le premier lien de la page (qui n'en contient qu'un)
Navigator transmet l'événement (ev)
forms[0] est le premier formulaire de la page (qui n'en contient qu'un)
Dans IE il faut récupérer l'événement
return false pour annuler l'effet du click
C'est parce que HTML ne différencie pas les majuscules des minuscule qu'on écrit onMouseDown. En JavaScript, il faut écrire onmousedown.
L'objet event - Propriétés
altKey altLeft button cancelBubble clientX,Y ctrlKey ctrlLeft data
dataTransfer fromElement height,width keyCode layerX,Y modifiers offsetX,Y pageX,Y
propertyName repeat returnValue screenX,Y shiftKey shiftLeft srcElement srcFilter
target toElement type which        
L'objet event - Événements
onAbort onBlur onChange onClick onDblClick onDragDrop
onError onFocus onKeyDown onKeyPress onKeyUp onLoad
onMouseDown onMouseMove onMouseOut onMouseOver onMouseUp onMove
onReset onResize onSelect onStop onSubmit onUnload

Retour au début