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">
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 !
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. |
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
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. |
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