Vous êtes sur la page 1sur 15

1

Partie 2 - Le langage JavaScript


Olivier GLUCK
Universit LYON 1fUFR d'!nformatique
Olivier.Gluck@ens-lyon.fr
http:ffwww710.univ-lyon1.frf~ogluck
Olivier Glck - 2007 N1!F - UE PW 2
Copyright
Copyright 2007 Olivier Glck; all rights reserved
Ce support de cours est soumis aux droits d'auteur et n'est
donc pas dans le domaine public. Sa reproduction est
cependant autorise a condition de respecter les conditions
suivantes :
Si ce document est reproduit pour les besoins personnels du
reproducteur, toute forme de reproduction (totale ou partielle) est
autorise a la condition de citer l'auteur.
Si ce document est reproduit dans le but d'tre distribu a des tierces
personnes, il devra tre reproduit dans son intgralit sans aucune
modification. Cette notice de copyright devra donc tre prsente. De
plus, il ne devra pas tre vendu.
Cependant, dans le seul cas d'un enseignement gratuit, une
participation aux frais de reproduction pourra tre demande, mais elle
ne pourra tre suprieure au prix du papier et de l'encre composant le
document.
Toute reproduction sortant du cadre prcis ci-dessus est interdite
sans accord pralable crit de l'auteur.
Olivier Glck - 2007 N1!F - UE PW 3
Remerciements
Quelques transparents sont directement tirs des
supports de cours de :
Dominique Bouillet (!NT)
Nerci a eux !
Des figures et exemples sont issus des livres ou
sites !nternet cits en bibliographie
Olivier Glck - 2007 N1!F - UE PW +
Bibliographie
Webmaster in a nutshell , S. Spainhour 8 R. Eckstein, 3ime
dition, O'RE!LLY, !SBN 0-596-00357-9
JavaScript, La rfrence , D. Flanagan, +ime dition en
franais, O'RE!LLY, !SBN 2-8+177-212-8
Cration d'un site Web du dbutant a l'expert , Daniel !chbiah,
Eska, !SBN 2-7+72-0227-5
HTNL et JavaScript , P. Chalat et Daniel Charnay, Eyrolles,
!SBN 2-212-11157-6
!nternet et JavaScript.
http:ffwww.aidejavascript.comfsommaire.php3
http:ffconceptnet.online.frfaccueil.htm
http:ffwww.ac-creteil.frfutilfprogrammationfjavascriptfWelcome.html
http:ffwww.le-webmestre.netfwebfcoursfjavascriptf
http:ffwww.henri-ruch.chfjavascriptfcours.asp
http:ffdeveloppementweb.online.frfindex1.html
http:ffwww.w3.orgf
Olivier Glck - 2007 N1!F - UE PW 5
Plan de la partie 2 (2 sances)
Le langage JavaScript
Les objets prdfinis
Les vnements
Les objets du noyau
Quelques exemples classiques
Le langage JavaScript
2
Olivier Glck - 2007 N1!F - UE PW 7
Notivations
!nsertion d'instructions de programmation
directement dans le code des pages HTNL
Excution de code sur le poste client pour
amliorer l'interactivit (temps de rponse plus court)
amliorer les dbits sur le rseau (viter des envois
errons)
proposer des pages dynamiques (animation,
personnalisation,.)
Exemples
test d'un formulaire avant envoi
animation type texte dfilant
affichage dynamique
Olivier Glck - 2007 N1!F - UE PW 8
Le langage JavaScript
Cr a l'origine par Netscape (Netscape 2.0)
Conu pour traiter localement des vnements
provoqus par le client
dplacement du pointeur de souris ou click de souris
soumission d'un formulaire, .
JavaScript est un langage
interprt (le code du script est analys et excut au
fur et a mesure par l'interprte, partie intgrante du
navigateur) - problme en cas d'erreurs !
a base d'objets
multi-plateforme
Olivier Glck - 2007 N1!F - UE PW 9
Le langage JavaScript
JavaScript permet
de programmer des actions en fonction d'vnements
si la zone de saisie contient un nombre alors
enregistrer la valeur sinon afficher une erreur
d'effectuer des calculs (sans recours au serveur)
lire la valeur saisie, la multiplier par 3,1+ et afficher
le rsultat
Olivier Glck - 2007 N1!F - UE PW 10
Le langage JavaScript
Domaines d'applications
petites applications simples (calculette, outils de
conversions, dition automatique de devis, jeu, .)
aspects graphiques de l'interface (modification
d'images lors du passage de la souris, gestion de
fentres, modification locale de la page HTNL,
modification de menus.)
test de validit des donnes sur les lments de
l'interface de saisie
vrifier qu'une valeur considre comme
obligatoire a bien t saisie
vrifier que le champ saisi correspond bien au
format demand
Olivier Glck - 2007 N1!F - UE PW 11
Autres langages analogues
Le langage vBScript
propos par Nicrosoft
driv de visual Basic
Le langage Jscript (microsoft)
Olivier Glck - 2007 N1!F - UE PW 12
Le noyau JavaScript
Au niveau du langage, on distingue
le noyau JavaScript (cur du langage) comportant des
objets prdfinis, des oprateurs, des structures, .
un ensemble d'objets associs au navigateur
fentres,
documents,
images, .
!l existe aussi la possibilit d'excuter du code
JavaScript sur le serveur (communications avec
une BD.) mais l'usage est plus restreint
3
Olivier Glck - 2007 N1!F - UE PW 13
Normalisation
ECNA (European Computer Nanufacturers
Association) a dfini un standard ECNAScript
bas sur JavaScript 1.1
Ce standard, repris par l'!SO, dfinit les
caractristiques du noyau du langage
JavaScript 1.3 et Jscript 3.0 sont conformes a
cette norme mais ils ont aussi tous les deux
leurs propres extensions
des diffrences au niveau du modle objet du
navigateur
Olivier Glck - 2007 N1!F - UE PW 1+
JavaScript n'est pas JAvA !
JavaScript
interprt
a base d'objets prdfinis (pas
d'hritage)
code intgr dans HTNL
(visible)
typage faible
n'existe pas en dehors du Web
dbuggage difficile
Java
compil
orients objets (dfinition
de classes, hritage)
code dans applets (non
visible)
typage fort
langage a part entire
environnement de
dveloppement
Communication possible entre Java et JavaScript grace au
plug'in LiveConnect (Netscape) ou aux contrles Active X
(Nicrosoft)
Olivier Glck - 2007 N1!F - UE PW 15
!nsertion de code JavaScript
3 mthodes
utilisation de la balise <script>.<fscript>
dclaration de fonction dans l'en-tte entre <head>
et <fhead>
appel de fonction ou excution d'une commande
JavaScript dans <body>.<fbody>
insertion d'un fichier JavaScript "externe"
utilisation dans une URL
une URL peut tre une excution de fonction
JavaScript (entre <a>.<fa> ou <form>.<fform>
utilisation de nouveaux attributs de balise pour la
gestion d'vnements utilisateur
<BAL!SE onEvenement="code JavaScript">
Olivier Glck - 2007 N1!F - UE PW 16
!nsertion de code JavaScript
<!-- index.html -->
<HTNL><HEAD>
<SCR!PT LANGUAGE="JAvASCR!PT">
function fin() { window.close(); )
<fSCR!PT>
<fHEAD><BODY>
<SCR!PT LANGUAGE="JAvASCR!PT">
document.write('Pour fermer la fentre');
<fSCR!PT>
<br><a href="javascript:fin();">cliquez ici<fa>
<br> ou passez la souris sur
<a href="" onNouseOver="fin();">ce lien<fa>
<fBODY><fHTNL>
Olivier Glck - 2007 N1!F - UE PW 17
La balise <SCR!PT>
!ntroduite pour permettre l'excution de code par
le navigateur
Syntaxe gnrale
<SCR!PT LANGAGE="nom" SRC="URL" ARCH!vE="fichier.jar"
!D="entier">.<fSCR!PT>
Attribut LANGAGE
"JavaScript" par dfaut dans Netscape
permet de prciser la version
Attribut SRC
permet de charger du code prsent dans un autre fichier
Attributs ARCH!vE et !D
utiliss pour la scurisation (signature digitale)
Olivier Glck - 2007 N1!F - UE PW 18
!nsertion d'un fichier externe
<!-- index.html -->
<HTNL><HEAD>
<SCR!PT LANGUAGE="JAvASCR!PT" SRC="fin.js">
<fSCR!PT>
<fHEAD><BODY>
<SCR!PT LANGUAGE="JAvASCR!PT">
document.write('Pour fermer la fentre');
<fSCR!PT>
<br><a href="javascript:fin();">cliquez ici<fa>
<br> ou passez la souris sur
<a href="" onNouseOver="fin();">ce lien<fa>
<fBODY><fHTNL>
ff fin.js
function fin() {
window.close();
)
+
Olivier Glck - 2007 N1!F - UE PW 19
La balise <NOSCR!PT>
Bonne utilisation de la balise <SCR!PT>
<SCR!PT LANGAGE="JavaScript1.2">
<! --
Code JavaScript
-->
<fSCR!PT>
<NOSCR!PT>
Attention, ce document contient du code JavaScript non
interprt par votre navigateur.
<fNOSCR!PT>
Olivier Glck - 2007 N1!F - UE PW 20
Le langage JavaScript
Des variables faiblement types
Des oprateurs et instructions (ceux du langage C)
Des mthodes
globales (associes a tous les objets)
fonctions dfinies par l'utilisateur
Des objets
prdfinis (String, Date, Nath, .)
lis a l'environnement (window, document, .)
Commentaires comme en langage C
ff une seule ligne ou f* plusieurs lignes *f
Sparateur d'instructions : ; (ou retour-chariot)
Olivier Glck - 2007 N1!F - UE PW 21
Oprateurs JavaScript
Ceux du langage C
arithmtiques : + - * f
infdcrmentation (prfpost indexe) : k++ ++k
logiques : 88 (ET) { { (OU) ! (NON)
bit a bit : 8 (AND) { (OR) ' (XOR) ~ (Not)
dcalages : >> (a droite) << (a gauche) >>> (non
sign)
comparaisons: == != <= >= < >
concatnation de chanes : +
ATTENT!ON : L'oprateur + est l'addition ou la
concatnation
Olivier Glck - 2007 N1!F - UE PW 22
Affectations
affectation simple
nom=valeur;
affectation conditionnelle
var = (condition) ? exp_alors : exp_sinon;
X = (a > b ) ? "plus" : "moins ";
affectation avec opration : += -= *= ...
X +=3; ff quivaut a X=X+3;
ATTENT!ON : distinguer l'affectation (=) et la
comparaison (==)
Olivier Glck - 2007 N1!F - UE PW 23
variables JavaScript
JavaScript est sensible a la casse
Dclaration de variables
optionnelle mais fortement conseille
avec l'instruction var
le type n'est pas prcis lors de la dclaration
initialisation possible lors de la dclaration sinon
valeur undefined
Notion de variables locales et globales
locales a une fonction
globales au document HTNL
Utilisation d'une variable globale d'un autre
document (autre frame)
window.parent.droite.nomvar
Olivier Glck - 2007 N1!F - UE PW 2+
<!-- index.html -->
<HTNL><HEAD>
<SCR!PT LANGUAGE="JAvASCR!PT1.2">
var Age=Nath.round(70*Nath.random());
var Nom;
var Prenom='Florent';
function affiche() {
var Nom='Dupont';
var Age=Nath.round(10*Nath.random());
document.write(Prenom + ' ' + Nom + ' ' + Age + ' ans<br>');
)
<fSCR!PT>
<fHEAD><BODY>
<SCR!PT LANGUAGE="JAvASCR!PT1.2">
document.write(Prenom + ' ' + Nom + ' ' + Age + ' ans<br>');
affiche();
<fSCR!PT>
<fBODY><fHTNL>
variables JavaScript
5
Olivier Glck - 2007 N1!F - UE PW 25
variables et types
Le typage a lieu lors de l'initialisation ou d'une
affectation
Le type d'une variable peut changer si on lui affecte
une valeur d'un autre type
Les types de donnes simples
Nombre (Number)
Entier : dcimal ou hexa (0x+F) ou octal (075)
Rel (-2.3+52E-12)
Boolen (Boolean) : true ou false
Chane de caractres (String)
'chaine' ou "chaine"
Les codes t (tabulation) n (a la ligne) r (retour chariot)
b (backspace) f (saut de page) sont reconnus
Olivier Glck - 2007 N1!F - UE PW 26
Conversions de type
Type String = type dominant
JavaScript fait des conversions implicites selon
les besoins
Exemples
N=12; ff N numrique
T="3+"; ff T chane de caractres
X=N+T; ff X est la chane de caractres "123+"
!l existe des types particuliers : null, undefined, objet,
function
et des nombres particuliers : !nfinity, -!nfinity, NaN
(Not a Number)
Olivier Glck - 2007 N1!F - UE PW 27
!nstructions classiques
!nstructions de branchement
if (condition) { instructions; ) [ else { instructions; ) |
Boucles
for (i=1 ; i<N ; i++) { instructions; )
while (condition) { instructions; )
do { instructions; ) while (condition)
for (p in objet) { instructions; )
Sortie d'une boucle
break;
!tration suivante d'une boucle
continue;
typeof(entite) retourne le type de l'entit
Olivier Glck - 2007 N1!F - UE PW 28
!nstructions classiques
Le bloc switch
switch (variable) {
case 'valeur 1':
Code a excuter si "variable == 'valeur 1'";
break;
case 'valeur 2':
Code a excuter si "variable == 'valeur 2'";
break;
case 12:
Code a excuter si "variable == 12";
break;
default:
Code a excuter si tous les autres ont chou;
break;
)
Olivier Glck - 2007 N1!F - UE PW 29
Les fonctions
function nom_f (arg1, ., argN) {
instruction1;
.
instructionN;
return valeur;
)
arguments non typs
nombre d'arguments non fix par la dclaration
Olivier Glck - 2007 N1!F - UE PW 30
Les fonctions - exemple
<!-- index.html -->
<HTNL><HEAD>
<SCR!PT LANGUAGE="JAvASCR!PT1.2" SRC="function.js">
<fSCR!PT>
<fHEAD><BODY>
<SCR!PT LANGUAGE="JAvASCR!PT1.2">
document.write('Aujourd'hui, on est ' + jour() + '<br>');
<fSCR!PT>
<FORN name="naissance"
onSubmit="document.write('vous tes ns un ' +
jour(this.date_naissance.value));">
<center>
Entrez votre date de naissance sous la forme jjfmmfaaaa : <br>
<input type="text" name="date_naissance">
<input type="submit" value="Je veux voir !">
<fcenter>
<fFORN>
<fBODY><fHTNL>
6
Olivier Glck - 2007 N1!F - UE PW 31
Les fonctions - exemple
ff function.js
f* retourne le jour de la semaine si pas d'argument sinon le jour de la semaine
correspondant a la date passe en argument jjfmmfaaaa *f
function jour(arg_date) {
var date_ANJ;
var Semaine = new Array('Dimanche', 'Lundi', 'Nardi', 'Nercredi', 'Jeudi',
'vendredi', 'Samedi');
if (arg_date) {
ff on rcupre arg_date dans un tableau d'entiers
date_JNA = arg_date.split('f');
ff on cre un objet Date en fournissant anne, mois (0-11), jour
date_ANJ = new Date(date_JNA[2|, date_JNA[1|-1, date_JNA[0|);
) else {
ff on cre un objet Date avec la date du jour
date_ANJ = new Date();
)
return Semaine[date_ANJ.getDay()|;
)
Olivier Glck - 2007 N1!F - UE PW 32
Les objets
Pas de classe mais des pseudo-classes
pas de sous-classe
pas d'hritage
uniquement des crations d'objets et la possibilit de
dfinir des proprits "prototype"
syntaxe largement inspire de la programmation objet
Objets prdfinis
accs a une proprit (objet.proprit)
accs a une mthode (objet.mthode)
Cration d'un objet par la dfinition de son
constructeur
Olivier Glck - 2007 N1!F - UE PW 33
Les objets - exemple
ff constructeur de l'objet individu
function individu(N, P, D) {
ff proprits d'un individu
this.nom = N;
this.prenom = P;
this.date = D;
ff mthodes d'un individu
this.age = calcul_age;
)
ff crer une instance de l'objet individu - appel du constructeur avec trois arguments
Pauline = new individu('Pauline', 'Dupont', '3f12f75');
ff modifier une proprit
Pauline.date = '3f12f78';
ff appel de la mthode age()
document.write(Pauline.age{));
ff suppression de l'instance Pauline
delete Pauline;
ff dfinition de la mthode calcul_age
function calcul_age() {
ff date du jour
var date_today = new Date();
ff date de naissance de l'individu
date_indiv = this.date.split('f');
.
return age_indiv;
)
Compltez !
Olivier Glck - 2007 N1!F - UE PW 3+
Les objets - la proprit prototype
Toutes les classes JavaScript ont une proprit
particulire "prototype" permettant d'ajouter
une nouvelle proprit ou mthode a une classe
Nom_classe.prototype.New_propriete = valeur_par_defaut;
Nom_classe est une classe prdfinie ou dfinie par
l'utilisateur
New_propriete est le nom de la nouvelle proprit ;
elle est cre pour tous les objets dja instancis ; si
elle existe dja, cela permet de lui affecter une valeur
par dfaut
valeur_par_defaut peut tre une rfrence vers une
fonction si on dsire ajouter une nouvelle mthode
Olivier Glck - 2007 N1!F - UE PW 35
Les tableaux
Construire un tableau sans prciser le contenu
var Tab = new Array();
Construire un tableau en prcisant la taille
var Tab = new Array(3);
!nitialisation du tableau lors de sa cration
var Tab = new Array(t1, ., tN);
-> les indices varient de 0 N-1
-> les ti peuvent tre de types diffrents
proprit length : taille du tableau
Tab.length = N;
La taille du tableau est dynamique
Olivier Glck - 2007 N1!F - UE PW 36
Tableaux et objets
Un tableau est un objet prdfini qui possde
des proprits et des mthodes
Tableaux associatifs : l'indice peut tre une
chane de caractres
Tab['nom'] est quivalent a Tab.nom
Un objet peut tre considr comme un tableau
associatif - exemple de parcours de l'ensemble
des proprits d'un objet :
for (p in window) { ff p est une chane de caractres
document.write('window.'+p+'='+window[p|+'<br>');
)
7
Olivier Glck - 2007 N1!F - UE PW 37
Tableaux et objets
<!-- propriete_obj.html -->
<HTNL><HEAD>
<fHEAD><BODY>
<SCR!PT LANGUAGE="JAvASCR!PT1.2">
ff p est une chane de caractres
for {p in window.location) {
document.writeln('<b>location.' + p + '<fb>=' + window.location[p| +
'<br>'); )
document.writeln("<hr>");
for {p in window.document) {
document.writeln('<b>document.' + p + '<fb>=' + window.document[p| +
'<br>'); )
document.writeln("<hr>");
for {p in window) {
document.writeln('<b>window.' + p + '<fb>=' + window[p| + '<br>'); )
<fSCR!PT>
<fBODY><fHTNL>
Les objets prdfinis
Olivier Glck - 2007 N1!F - UE PW 39
Les objets prdfinis (1)
L'objet Global qui dfinit un ensemble de
proprits et mthodes communes a tous les
objets
les mthodes et proprits de cet objet n'appartiennent
a aucune classe et cet objet n'a pas de nom
la seule faon de faire rfrence a cet objet est this
chaque variable ou fonction globale est une proprit de
Global
sur un navigateur client, l'objet window est l'objet
Global auquel il a t ajout certaines proprits et
mthodes
proprits de Global : Infinity, NaN, undifined
Olivier Glck - 2007 N1!F - UE PW +0
Les objets prdfinis (2)
L'objet Global - quelques mthodes
parseFloat{s) et parseInt{s,base) pour les
conversions string->rel ou entier
isNaN{expr) pour tester une expression numrique
eval{s) permet d'valuer une expression JavaScript
contenu dans la chane de caractre s
escape{s) et unescape{s) pour le codage de type
URL-encod
escape("Hello World!"); ff retourne "Hello20World21"
Olivier Glck - 2007 N1!F - UE PW +1
Les objets prdfinis (3)
Les classes prdfinies du noyau JavaScript
Array - objet pour crer les tableaux
Boolean - objet pour crer un Boolen (true ou false)
Date - contient des mthodes de traitement de la date
Function - objet pour crer des fonctions
Math - contient des mthodes et des proprits
mathmatiques (sinus, cosinus, racine carre...)
Number - objet pour crer des nombres
Image - objet de gestion dynamique des images
Option - permet la gestion des listes cres avec
<select> dans les formulaires
RegExp - pour l'utilisation des expression rgulires
String - objet pour crer des chanes
Olivier Glck - 2007 N1!F - UE PW +2
Les objets prdfinis (+)
Les objets instancis automatiquement lors du
dmarrage du browser
permettent d'accder a des informations concernant le
navigateur client, les documents HTNL affichs, l'cran
de la machine
la classe Navigator
une seule instance -> objet navigator
infos sur nom, version, plug-ins installs,.
la classe Window
une instance par fentre et frame du document HTNL
accs a tous les objets crs par des balises HTNL
la classe Screen
une seule instance -> objet screen
infos sur largeur et hauteur en pixels, nombre de
couleurs disponibles,.
8
Olivier Glck - 2007 N1!F - UE PW +3
Hirarchie des objets du navigateur
L'objet window est l'objet
racine :
var t=10; ff nelle proprit
de l'objet window
window.t=10; ff quivalent
a la ligne prcdente
Olivier Glck - 2007 N1!F - UE PW ++
Hirarchie des objets du navigateur
Une image est contenue dans un document qui
est lui mme contenu dans une fentre...
Un champ de saisie est contenu dans un
formulaire qui lui mme est contenu dans un
document...
Olivier Glck - 2007 N1!F - UE PW +5
L'objet navigator (1)
navigator.appName = Netscape nom du browser
permet de diffrencier les navigateurs
navigator.appVersion = +.7 [fr| (Win95; !)
informations sur la plate-forme d'excution
navigator.language = fr (2 caractres)
navigator.platform = Win32 type de machine
navigator.appCodeName = Nozilla nom de code
navigator.userAgent = Nozillaf+.7 [fr| (Win95; !)
informations gnrales envoyes au serveur HTTP a
chaque requte du navigateur
Olivier Glck - 2007 N1!F - UE PW +6
L'objet navigator (2)
navigator.plugins = [object PluginArray| tableau des
plug-ins installs sur le navigateur
var p0 = navigator.plugins[0|.name;
document.write(navigator.plugins[p0|.description);
navigator.mimeTypes = [object NimeTypeArray|
tableau des types mimes reconnus par le navigateur
mimeTypes[0|.type nom du type N!NE ('imagefgif')
mimeTypes[0|.description description du type
mimeTypes[0|.enabledPlugin rfrence vers le plug-in qui gre
ce type
mimeTypes[0|.suffixes listes des suffixes de fichiers grs par
ce type
Olivier Glck - 2007 N1!F - UE PW +7
Les problmes d'incompatibilit
ff vrifie que le navigateur soit au minimum !E+ ou Netscape+
function verifieNav() {
var oldNav = true;
navName = navigator.appName;
navver = parse!nt(navigator.appversion);
if (navName == "Netscape" 88 navver >= +)
oldNav = false;
else if (navName == "Nicrosoft !nternet Explorer" 88 navver >= +)
oldNav = false;
if (oldNav)
alert("Passez a une version plus rcente de votre navigateur !");
)
if (navigator.appName == "Netscape") {
ff Code a excuter avec le navigateur Netscape
) else {
ff Code a excuter avec les autres navigateurs
)
Olivier Glck - 2007 N1!F - UE PW +8
L'objet screen
screen.height hauteur de l'cran en pixels
screen.width largeur de l'cran en pixels
screen.availHeight nombre de pixels disponibles
verticalement (sans les barres de taches, .)
screen.availWidth idem horizontalement
screen.pixelDepth nombre de bits utiliss pour coder
la couleur en pixels
screen.colorDepth nombre de couleurs disponibles
9
Olivier Glck - 2007 N1!F - UE PW +9
La classe Window (1)
Un objet window pour chaque fentre ou cadre
(zone) ouverte par le navigateur
3 proprits de base
window.history qui contient un tableau des URL
dja visites dans la zone (historique)
window.location qui contient les caractristiques de
l'URL de la zone
window.document qui contient les caractristiques
et tous les objets de la zone
Olivier Glck - 2007 N1!F - UE PW 50
La classe Window (2)
Accs aux objets contenus dans l'objet window
rfrence directe a l'objet window de la zone
window.document.bgcolor = 'blue';
rfrence a un objet window d'une autre zone par
l'intermdiaire d'une proprit
window.top.cadre_droit.document.bgcolor = 'blue';
window.parent.frames[1|.document.bgcolor = 'blue';
rfrence a un objet window d'une autre zone par
l'intermdiaire d'une variable
var new_window=window.open('test.html');
new_window.document.bgcolor = 'blue';
Olivier Glck - 2007 N1!F - UE PW 51
Principales proprits de window (1)
document contient des mthodes et
informations sur le document (voir aprs)
history permet d'avoir accs a l'historique d'une
page (voir aprs)
location permet d'avoir accs a toutes les
informations de l'URL (voir aprs)
external cet objet permet d'avoir accs a
certaines proprits du navigateur et de les
modifier, telles que la page d'accueil, les favoris
(!E uniquement)
Olivier Glck - 2007 N1!F - UE PW 52
Principales proprits de window (2)
frames[] permet d'avoir accs aux cadres ; on
peut galement utiliser directement le nom du
cadre
parent, self, top permettent d'accder aux
autres cadres
defaultStatus permet de prciser la valeur par
dfaut du texte a afficher dans la barre d'tat
(quand la souris est sur le fond de la zone)
status permet de prciser la valeur du texte a
afficher dans la barre d'tat a un instant donn
Olivier Glck - 2007 N1!F - UE PW 53
Principales proprits de window (3)
closed boolen qui permet de savoir si la zone a
t ferme
opener retourne l'objet window qui a ouvert
cette fentre (avec la mthode open())
Autres proprits relatives aux caractristiques
de la zone (dimensions, positionnement)
innerHeight, innerWidth, outerHeight, outerWidth,
pageXOffset, pageYOffset, screenX, screenY
Olivier Glck - 2007 N1!F - UE PW 5+
Principales mthodes de window (1)
La mthode open{)
win = window.open(URL, nom_zone, options);
options boolennes (yes ou no) : fullscreen, menubar,
toolbar, scrollbars, status, resizable
options en pixels : height, width, left, top
La mthode close{)
window.close();
demande de confirmation a l'utilisateur si la zone n'a
pas t ouverte avec open()
La mthode alert{)
window.alert(message);
ouvre une fentre d'alerte ou s'affiche message avec
un bouton OK qui permet de fermer la fentre
10
Olivier Glck - 2007 N1!F - UE PW 55
Principales mthodes de window (2)
La mthode focus{)
window.focus(); rend la zone active
La mthode blur{)
window.blur(); rend la zone non active
La mthode prompt{)
chaine = window.prompt(message, valeur_defaut);
ouvre une fentre compose d'un message et d'un
champ de saisie et retourne la valeur saisie
La mthode confirm{)
bool = window.confirm(message);
ouvre une fentre avec message, boutons OK et
Annuler et retourne true (OK) ou false (Annuler)
Olivier Glck - 2007 N1!F - UE PW 56
Principales mthodes de window (3)
La mthode back{)
window.back(); renvoie sur la page prcdente
La mthode forward{)
window.forward(); renvoie sur la page suivante
La mthode home{)
window.home(); renvoie sur la page d'accueil du browser
La mthode stop{)
window.stop(); stoppe le chargement de la zone
La mthode find{)
chaine = window.find(chaine, casse, sens);
recherche la chane dans la zone
Olivier Glck - 2007 N1!F - UE PW 57
Principales mthodes de window (+)
La mthode print{)
permet d'imprimer le document courant comme si
l'utilisateur avait cliqu sur le bouton "imprimer"
Les mthodes setTimeout{) et clearTimeout{)
timeout = window.setTimeout(codeJS, msec);
timeout = window.setTimeout(func, msec, arg1,.,argN);
window.clearTimeout(timeout);
Les mthodes setInterval{) et clearInterval{)
idem mais excutions priodiques toutes les msec
interval = window.set!nterval(codeJS, msec);
interval = window.set!nterval(func, msec, arg1,.,argN);
window.clear!nterval(interval);
DHTNL !
Olivier Glck - 2007 N1!F - UE PW 58
Principales mthodes de window (+)
Les mthodes moveBy{) et moveTo{)
permettent de dplacer la zone
window.moveBy(dx,dy); ff dx pixels vers la droite, dy vers le bas
window.moveTo(x,y); ff (x,y) = coin suprieur gauche
Les mthodes resizeBy{) et resizeTo{)
permettent de redimensionner la zone
window.resizeBy(dw,dh); ff dw pixels d'augmentation de la largeur.
window.resizeTo(l,h); ff largeur et hauteur en pixels
Les mthodes scrollBy{) et scrollTo{)
permettent de faire dfiler la zone
window.scrollBy(dx,dy); ff dfilement de dx pixels vers la droite...
window.scrollTo(x,y); ff le point (x,y) du document est affich dans le
coin suprieur gauche de la fentre
Olivier Glck - 2007 N1!F - UE PW 59
Les vnements associs a window
onFocus - excuter du code JS quand la fentre
devient active
<BODY onFocus="codeJS"> ou
window.onfocus=f; ff f est une fonction ou null
onBlur - idem mais quand la fentre devient
non active
onerror - excuter une fonction quand survient
une erreur dans le code JavaScript
window.onerror=f; ff f est une fonction ou null
Et aussi : onload, onunload , onmove,
onresize
Olivier Glck - 2007 N1!F - UE PW 60
La proprit history de window
window.history est un objet qui permet
d'avancer ou reculer dans l'historique du browser
associe a la zone
Trois mthodes : back{), forward{) et go{int)
window.history.back(); ou window.history.forward();
window.history.go(-2); retourne 2 documents en arrire
window.history.go(3); retourne 3 documents en avant
window.history.go(0); recharge le document courant
<a href="javascript:window.history.back();">Retour<fa>
11
Olivier Glck - 2007 N1!F - UE PW 61
La proprit location de window (1)
window.location est un objet qui contient des
informations sur l'URL de la zone
Deux mthodes : reload{) et replace{URL)
window.location.reload(); recharge le document courant
window.location.replace(URL); remplace le document
courant par celui dont l'URL est pass en paramtre
mais sans changer l'historique du navigateur
Les proprits
window.location.href contient la totalit de l'URL ;
permet de charger une URL dans une autre fentre
Olivier Glck - 2007 N1!F - UE PW 62
La proprit location de window (2)
Les proprits (suite.)
window.location.hash partie de l'URL situe aprs le #
window.location.host nom du serveur et port
window.location.hostname nom du serveur
window.location.port numro du port sur le serveur
window.location.pathname entre le nom d'un script
CG! et le ?
window.location.protocol nom du protocole
window.location.search partie de l'URL situe aprs le
? ; permet de rcuprer les donnes d'un formulaire en
mthode GET
Olivier Glck - 2007 N1!F - UE PW 63
La proprit document de window (1)
Les principales proprits
titre du document : document.title
couleur du texte : document.fgColor
couleur du fond : document.bgColor
couleur de liens : document.linkColor
couleur de liens visits : document.vlinkColor
couleur de liens activs : document.alinkColor
adresse du document : document.URL
URL du document prcdent : document.referrer
date de dernire modification : document.lastModified
il y a beaucoup d'autres proprits lies aux balises
<body>, <img>, <form>, <a>, <area>, .
Olivier Glck - 2007 N1!F - UE PW 6+
La proprit document de window (2)
Les principales proprits (de type collection)
anchors[] tableau des liens internes <A NANE=...>
applets[] tableau des applets <APPLET CODE=...>
embeds[] tableau des objets insrs <ENBED SRC=...>
forms[] tableau des formulaires <FORN>
elements[] tableau des composants du formulaire
<!NPUT...>, <SELECT...>, ...
images[] tableau des images <!NG SRC=...>
links[] tableau des liens (hypertextes et images cliquables)
<A HREF=...>
all[| rfrence tous les lments HTNL du document dans
l'ordre d'apparition dans le source (!E seulement)
layers[| rfrence tous les blocs D!v (Netscape seulement)
Olivier Glck - 2007 N1!F - UE PW 65
La proprit document de window (3)
Accs a un objet du document
<form name="mon_form">
<input type="text" name="t1" value="z1">
<input type="submit" name="b1" value="go">
<fform>
<l-- l'attribut id permet de donner un nom un lment -->
<a id="mon_lien" href="f1.html">lien1<fa>
<script>
ff forms[0|, forms['mon_form'| et mon_form sont quivalents
document.forms[0|.elements[0|.value = 'z2';
document.mon_form.b1.value = 'Envoyer'; JJ car attribut name
document.links[0].href = document.URL; JJ standard
if (navigator.appName == "Netscape")
document.links['mon_lien'].target='_blank'; JJ Netscape seulement
if (navigator.appName == "Nicrosoft !nternet Explorer")
document.all.mon_lien.target='_blank'; JJ IE seulement
<fscript>
Olivier Glck - 2007 N1!F - UE PW 66
La proprit document de window (+)
Accs au contenu de <p>, <div>, . ?
Principales mthodes d'accs a un objet du
document (DON niveau 2)
getElementById{"id1") retourne l'lment du
document dont l'attribut id vaut "id1" (null sinon) ; id1
doit tre unique
document.getElementById{"mon_lien").target='_blank';
getElementsByName{"mon_form") retourne le
tableau des lments dont l'attribut name vaut
"mon_form" (tableau de longueur nulle sinon)
getElementsByTagName{"h1") retourne le tableau
des lments du document de type "h1" (l'argument
est un nom de balise)
permet d'atteindre tous les liens du document, ...
12
Olivier Glck - 2007 N1!F - UE PW 67
La proprit document de window (5)
Principales mthodes
write{arg1, ., argN) affiche les chanes ou les
arguments traduits en chanes
writeln{arg1, ., argN) idem que write() mais
ajoute un retour chariot non interprt par HTNL
open{) cre un nouveau document (vide l'ancien)
dans lequel on peut crire avec write(), ne pas
confondre avec la cration d'une fentre !
close{) ferme le document et provoque l'affichage de
ce qui a t crit avec write(), ne pas confondre avec
la fermeture d'une fentre !
getSelection{) retourne une chane de caractres
contenant le texte slectionn dans le document
Olivier Glck - 2007 N1!F - UE PW 68
La proprit document de window (6)
<!-- index.html -->
<HTNL><HEAD>
<SCR!PT LANGUAGE="JAvASCR!PT" SRC="function.js">
<fSCR!PT>
<fHEAD><BODY>
<div id="title1" style="position:absolute; top:50; left:20;">
<h1>DHTNL...<fh1>
<fdiv>
<div style="position:absolute; top:10; left:250;">
<a href="javascript:changeText();">Nodifier le texte<fa><br>
<a href="javascript:changeColor();">Nodifier la couleur<fa><br>
<a href="javascript:changePosition();">Dplacer le bloc<fa>
<a href="javascript:AfficheBloc();">Affiche le bloc<fa>
<a href="javascript:NasqueBloc();">Nasque le bloc<fa>
<fdiv>
<script language="JavaScript">
var elm = document.getElementById{'title1');
<fscript>
<fBODY><fHTNL>
Olivier Glck - 2007 N1!F - UE PW 69
La proprit document de window (7)
ff function.js
function changeText() {
elm.innerHTML="<b><i>... est dynamique !<fi><fb>";
f* outerHTNL permet de tout rcrire (marqueurs compris)
elm.outerHTML="<div id="title1" style="background-color:
gold;">... est dynamique !<fdiv>" *f
)
function changeColor() {
elm.style.color="#00FF00";
)
function changePosition() {
elm.style.top="+00";
elm.style.left="+00";
)
Les vnements
Olivier Glck - 2007 N1!F - UE PW 71
Les vnements (1)
Des vnements sont associs aux actions de
l'utilisateur et a certaines balises
notion de couple (objet, vnement)
permet d'excuter du code JavaScript lorsque
l'vnement se produit sur l'objet associ
Exemples d'vnements
un lien hypertexte est sensible au clic ou au passage
de la souris
un formulaire est sensible au fait d'tre soumis
une page est sensible au fait d'tre charge
Olivier Glck - 2007 N1!F - UE PW 72
Les vnements (2)
Deux faons d'associer une action a un couple (objet,
vnement)
utiliser des attributs de balise spcifiques associs aux
vnements
<a href="index.html" onMouseOver="alert('bonjour');">cliquez ici<fa>
indiquer pour un lment et un vnement donns la
fonction qui devra tre excute
<body><a id="l1" href="index.html">cliquez ici<fa><fbody>
<script>
function bonjour() { alert('bonjour'); );
document.links[0|.onmouseover=bonjour;
<fscript>
13
Olivier Glck - 2007 N1!F - UE PW 73
Les vnements (3)
La classe event
quand un vnement se produit, le navigateur cre un
objet event avec les proprits suivantes :
type chane indiquant le type de l'vnement
target objet sur lequel l'vnement est dclench
layerX, layerY position de la souris en pixels dans la couche
pageX, pageY position de la souris en pixels dans la page
screenX, screenY position de la souris en pixels dans
l'cran
on accde a l'objet event par
event.xxxx dans l'attribut de la balise capturant l'evt
event qui peut tre pass en paramtre de la fonction
associe a l'evt
Olivier Glck - 2007 N1!F - UE PW 7+
Les vnements (+)
Attribut Balises concernes Dclenchement de l'vnement
onAbort !NG L'utilisateur interrompt le chargement d'une image
onBlur
BODY, FRANESET, <!NPUT
txt,pwd>, <TEXTAREA>
Un lment n'est plus actif (perd le focus)
onChange <!NPUT txt,pwd>, <TEXTAREA> L'utilisateur a changer la valeur d'un champ de saisie
onClick <A>, <AREA>, <!NPUT others> L'utilisateur clique sur un objet
onDbClick <A>, <AREA>, <!NPUT others> L'utilisateur double-clique sur un objet
onError !NG ou window.onerror
Une erreur se produit lors du chargement d'une image
ou de l'excution d'un code JavaScript
onFocus
BODY, FRANESET, <!NPUT
txt,pwd>, <TEXTAREA>
Un lment devient actif (reoit le focus)
onKeyDown <!NPUT txt,pwd>, <TEXTAREA> L'utilisateur appuie sur une touche
onKeyPress <!NPUT txt,pwd>, <TEXTAREA> L'utilisateur appuie, puis relache une touche
onKeyUp <!NPUT txt,pwd>, <TEXTAREA> L'utilisateur relache une touche
onLoad BODY, FRANESET, !NG Un document ou une image commence a se charger
onMouseDown <A>, <AREA>, <!NPUT others> L'utilisateur appuie sur un bouton de la souris
onMouseMove seulement interceptable L'utilisateur dplace la souris
onMouseOut <A>, <AREA>, <!NPUT others> L'utilisateur fait ressortir la souris de l'objet
onMouseOver <A>, <AREA> L'utilisateur place la souris sur un objet
onMouseUp <A>, <AREA> L'utilisateur relache un bouton de la souris
onMove BODY, FRANESET L'utilisateur dplace une fentre
onReset FORN Un formulaire est rinitialis par un bouton reset
onResize BODY, FRANESET L'utilisateur redimensionne une fentre ou un cadre
onScroll BODY, FRANE L'utilisateur se sert des barres de dfilement de la page
onSelect <!NPUT txt,pwd>, <TEXTAREA> L'utilisateur slectionne du texte dans un champ
onSubmit FORN Un formulaire est soumis (bouton submit)
onUnload BODY, FRANESET Un document se dcharge (chargement d'un autre doc)
Olivier Glck - 2007 N1!F - UE PW 75
Les vnements (5)
Pour la plupart des vnements, le navigateur
possde dja un comportement par dfaut (ex:
chargement du document lors du click sur un lien)
Quand un vnement est intercept, le
navigateur excute d'abord le traitement
JavaScript dfini dans la page puis le traitement
par dfaut
Pour empcher le traitement par dfaut, il faut
retourner la valeur false :
<a href="l.html" onClick="return confirm('continue ?');">lien<fa>
Les objets du noyau JavaScript
Olivier Glck - 2007 N1!F - UE PW 77
L'objet String
Proprit : length
Principales mthodes de manipulation de chanes
indexOf(chaine,index),
substring(dbuf,fin+1), charAt(n),
last!ndexOf(chaine), toLowerCase(),
toUpperCase(), split(), toString()
var T = Bonjour;
T.indexOf ("o"); --> 1
T.last!ndexOf("o"); --> +
T.charAt(3); --> j
T.substring(3,7); --> jour
T.toUpperCase(); --> BONJOUR
Olivier Glck - 2007 N1!F - UE PW 78
L'objet Nath
Proprits : constantes mathmatiques
E, P!, SQRT2, SQRT1_2 (1fSQRT2), LN2, LN10,
LOG2E, LOG10E
Nthodes : fonctions usuelles
trigonomtriques : cos, sin, tg, acos, atan, asin, atan2
abs (valeur absolue)
ceil (entier sup), floor (entier inf), round (entier +
proche)
exp, log, sqrt, pow(x,a)
max (a,b), min (a,b)
random --> 0 < r < 1
1+
Olivier Glck - 2007 N1!F - UE PW 79
L'objet Array
Proprit : length (nombre d'lments)
Principales mthodes :
join concatne tous les lments en une chane de
caractres spars par une virgule ou un sparateur
pass en argument
reverse transpose le tableau (1<->N 2<-> N-1...)
sort trie les lments dans l'ordre lexicographique ou
selon la relation d'ordre passe en argument (fonction
de comparaison fournie par l'utilisateur)
Quelques exemples classiques
Olivier Glck - 2007 N1!F - UE PW 81
Changement de la couleur de fond
<!-- ex1.html -->
<HTNL><BODY><CENTER>
<FORN>
<SELECT NANE="couleur"
onChange="document.bgColor=this.options[this.selected!ndex|.value;">
<OPT!ON selected vALUE="" >Choisissez une couleur de fond
<OPT!ON vALUE="blue">Bleu
<OPT!ON vALUE="aquamarine">vert clair
<OPT!ON vALUE="darkred">Narron
<OPT!ON vALUE="gold">Or
<OPT!ON vALUE="red">Rouge
<OPT!ON vALUE="yellow">Jaune
<OPT!ON vALUE="hotpink">Rose
<OPT!ON vALUE="#000000">Noir
<OPT!ON vALUE="#FFFFFF">Blanc
<fSELECT><fFORN><fCENTER><fBODY>
Olivier Glck - 2007 N1!F - UE PW 82
alert() et formulaires
<!-- ex2.html -->
<HTNL><HEAD><SCR!PT LANGUAGE="Javascript">
<!--
function pop_up(msg)
{
alert (msg);
) -->
<fSCR!PT><fHEAD><BODY><CENTER>
<A HREF="javascript:pop_up('Nessage 01 !');">NESSAGE 01<fA>
<FORN ACT!ON="toto.html" onSubmit="confirm('Soumission');">
<!NPUT type="button" value="NESSAGE 02" onClick="pop_up('Nessage
02 !');">
<!NPUT type="submit" value="Envoyer" onClick="pop_up('Nessage 03
!');">
<fFORN>
<fCENTER><fBODY><fHTNL>
Olivier Glck - 2007 N1!F - UE PW 83
Conversions FrancsfEuros
<!-- ex3.html -->
<HTNL><HEAD><SCR!PT LANGUAGE="JavaScript">
function f2e (form)
{ form.eur.value = form.fra.valuef6.55957; )
function e2f (form)
{ form.fra.value = form.eur.value*6.55957; )
<fSCR!PT><fHEAD><BODY>
<FORN name="fe">
<!NPUT TYPE="text" name="fra" size="15"
onChange="f2e(document.fe);"> F<br>
<!NPUT TYPE="text" name="eur" size="15"
onChange="e2f(document.fe);"> Euros
<fFORN>
Calculs effectus sur la base de<BR>
1F = 6.55957 Euros
<fBODY><fHTNL>
Olivier Glck - 2007 N1!F - UE PW 8+
Affichage de l'heure
<!-- ex+.html -->
<HTNL><HEAD>
<SCR!PT LANGUAGE="JavaScript1.2">
var t=null;
function affiche_heure() {
var now = new Date();
var hrs = now.getHours();
var min = now.getNinutes();
var sec = now.getSeconds();
document.heure.h.value = hrs;
document.heure.m.value = min;
document.heure.s.value = sec; )
function start() { t = set!nterval(affiche_heure,1000); )
function stop() { clear!nterval(t); )
function restart() { window.location.reload(); )
<fSCR!PT><fHEAD>
<BODY onLoad="start{);">
<FORN NANE="heure">
<!NPUT TYPE="text" NANE="h" S!ZE=2>
<!NPUT TYPE="text" NANE="m" S!ZE=2>
<!NPUT TYPE="text" NANE="s" S!ZE=2>
<!NPUT TYPE="button" vALUE="STOP" onClick="stop{);">
<!NPUT TYPE="button" vALUE="CONT!NUE" onClick="restart{);">
<fFORN><fBODY><fHTNL>
15
Olivier Glck - 2007 N1!F - UE PW 85
Test d'une adresse mail
<!-- ex5.html -->
<HTNL><HEAD>
<SCR!PT LANGUAGE="JavaScript">
function verifNail(adresse) {
if (adresse == "" ) {
alert ("vous n'avez pas saisi votre adresse");
document.forms[0|.email.focus(); return false;
)
arob = adresse.indexOf('@');
if (arob == -1) {
alert ("Adresse incorrecte (pas de @)"); document.forms[0|.email.value="";
document.forms[0|.email.focus(); return false; )
site = adresse.substring(arob+1);
if (site == "ens-lyon.fr" ) { return confirm('c'est bon ! On envoie ?'); )
else { alert ("site : "+ site +" incorrect"); return false; )
)
<fSCR!PT><fHEAD><BODY>
<FORN name="formulaire" action="toto.html" onSubmit="return
verifNail(document.formulaire.email.value);">
Entrez votre adresse e-mail : <BR>
<!NPUT TYPE="text" NANE="email" S!ZE="20" NAXLENGTH="+0">
<!NPUT TYPE="submit" vALUE="Envoyer">
<fFORN><fBODY><fHTNL>
Olivier Glck - 2007 N1!F - UE PW 86
Cration d'une fentre
<!-- ex6.html -->
<HTNL><HEAD><SCR!PT LANGUAGE="JavaScript">
var maFen=null;
function ouvrir() {
var options = "width=300,height=30";
ff window.open(url, nom-pour-target, caractristiques)
maFen = window.open("", "Na_Fenetre", options);
maFen.document.open();
maFen.document.write("Exemple JavaScript");
maFen.document.close();
)
function fermer() {
maFen.close();
)
<fSCR!PT><fHEAD><BODY>
Passez sur ce <A HREF="" onNouseOver="ouvrir();"
onNouseOut="fermer();">lien <fa>
sans cliquer<br>
!l doit se passer quelque chose... et ensuite sortez du lien
<fBODY><fHTNL>
Olivier Glck - 2007 N1!F - UE PW 87
Texte dfilant
<!-- ex7.html -->
<HTNL><HEAD><SCR!PT LANGUAGE="JavaScript">
var posBan1=0, ban1, msgBan1, sp="";
function banniere1(delai) {
for (i=1;i<35;i++) sp=sp+" ";
msgBan2=sp+msgBan1+sp;
ban1 = set!nterval(banniere2,delai);
)
function banniere2(delai) {
if (posBan1 >= 2*msgBan1.length) posBan1 = 0;
document.formBan1.Fbanniere1.value =
msgBan2.substring(posBan1,posBan1+msgBan1.length);
posBan1++;
)
<fSCR!PT><fHEAD><BODY onLoad="msgBan1='voici un exemple de
texte defilant '; banniere1(500);" onUnload="clearTimeout(ban1);">
<FORN NANE="formBan1">
<!NPUT TYPE="text" NANE="Fbanniere1" S!ZE="35">
<fFORN><fBODY><fHTNL>
Olivier Glck - 2007 N1!F - UE PW 88
JavaScript et les images
<!-- ex8.html -->
<HTNL><HEAD><SCR!PT LANGUAGE="JavaScript">
var img = new !mage(+00,+00);
ff permet d'acclrer le chargement de l'image
ff (pr-chargement de img1.gif dans le cache du navigateur)
img.src = "img1.gif"
<fSCR!PT><fHEAD><BODY>
<!NG src="img0.gif" width="100" height="100"
onNouseOver="this.src='img1.gif';this.width=+00;this.height=+00;"
onNouseOut="this.src='img2.gif';this.width=200;this.height=200;">
<fBODY><fHTNL>