Académique Documents
Professionnel Documents
Culture Documents
WebJavascript et Ajax
Developpement
Web
Javascript et Ajax
Jean-Michel Richer
jean-michel.richer@univ-angers.fr
http://www.info.univ-angers.fr/pub/richer
25 janvier 2010
1 / 81
Developpement
WebJavascript et Ajax
Objectif
Objectif du cours
revisiter Javascript et les fonctionnalites
associees
au
2 / 81
Developpement
WebJavascript et Ajax
Plan
Plan
Le Langage Javascript
du langage
Fonctionnalites
Ajax
3 / 81
Developpement
WebJavascript et Ajax
Le Langage Javascript
Caracteristiques
du langage
cre e par Netscape en 1995 (LiveScript)
utilise cot
e client pour dynamiser les pages web
langage tres
` particulier (fonctionnel)
integration
Attention !
e de Java, ce sont deux langages
Javascript nest pas un deriv
ou leurs syntaxes mais
proches par leurs structures de controle
` differents.
tres
4 / 81
Developpement
WebJavascript et Ajax
Le Langage Javascript
Caracteristiques
du langage
cre e par Netscape en 1995 (LiveScript)
utilise cot
e client pour dynamiser les pages web
langage tres
` particulier (fonctionnel)
integration
Attention !
e de Java, ce sont deux langages
Javascript nest pas un deriv
ou leurs syntaxes mais
proches par leurs structures de controle
` differents.
tres
5 / 81
Developpement
WebJavascript et Ajax
Le Langage Javascript
Caracteristiques
du langage
cre e par Netscape en 1995 (LiveScript)
utilise cot
e client pour dynamiser les pages web
langage tres
` particulier (fonctionnel)
integration
Attention !
e de Java, ce sont deux langages
Javascript nest pas un deriv
ou leurs syntaxes mais
proches par leurs structures de controle
` differents.
tres
6 / 81
Developpement
WebJavascript et Ajax
Le Langage Javascript
Caracteristiques
du langage
cre e par Netscape en 1995 (LiveScript)
utilise cot
e client pour dynamiser les pages web
langage tres
` particulier (fonctionnel)
integration
Attention !
e de Java, ce sont deux langages
Javascript nest pas un deriv
ou leurs syntaxes mais
proches par leurs structures de controle
` differents.
tres
7 / 81
Developpement
WebJavascript et Ajax
Le Langage Javascript
Caracteristiques
du langage
cre e par Netscape en 1995 (LiveScript)
utilise cot
e client pour dynamiser les pages web
langage tres
` particulier (fonctionnel)
integration
Attention !
e de Java, ce sont deux langages
Javascript nest pas un deriv
ou leurs syntaxes mais
proches par leurs structures de controle
` differents.
tres
8 / 81
Developpement
WebJavascript et Ajax
Le Langage Javascript
Caracteristiques
du langage
cre e par Netscape en 1995 (LiveScript)
utilise cot
e client pour dynamiser les pages web
langage tres
` particulier (fonctionnel)
integration
Attention !
e de Java, ce sont deux langages
Javascript nest pas un deriv
ou leurs syntaxes mais
proches par leurs structures de controle
` differents.
tres
9 / 81
Developpement
WebJavascript et Ajax
Le Langage Javascript
ECMAScript
10 / 81
Developpement
WebJavascript et Ajax
Le Langage Javascript
Utilisation de Javascript
Utilisation de Javascript
langage lie aux navigateurs
en dehors des navigateurs : Rhino
Rhino - http://www.mozilla.org/rhino/
implantation de Javascript en Java
rhino nom-fichier.js
utiliser print au lieu de document.write ou alert
11 / 81
Developpement
WebJavascript et Ajax
Le Langage Javascript
Utilisation de Javascript
Utilisation de Javascript
langage lie aux navigateurs
en dehors des navigateurs : Rhino
Rhino - http://www.mozilla.org/rhino/
implantation de Javascript en Java
rhino nom-fichier.js
utiliser print au lieu de document.write ou alert
12 / 81
Developpement
WebJavascript et Ajax
Le Langage Javascript
Utilisation de Javascript
Utilisation de Javascript
langage lie aux navigateurs
en dehors des navigateurs : Rhino
Rhino - http://www.mozilla.org/rhino/
implantation de Javascript en Java
rhino nom-fichier.js
utiliser print au lieu de document.write ou alert
13 / 81
Developpement
WebJavascript et Ajax
Le Langage Javascript
Utilisation de Javascript
Utilisation de Javascript
langage lie aux navigateurs
en dehors des navigateurs : Rhino
Rhino - http://www.mozilla.org/rhino/
implantation de Javascript en Java
rhino nom-fichier.js
utiliser print au lieu de document.write ou alert
14 / 81
Developpement
WebJavascript et Ajax
Le Langage Javascript
Utilisation de Javascript
Utilisation de Javascript
langage lie aux navigateurs
en dehors des navigateurs : Rhino
Rhino - http://www.mozilla.org/rhino/
implantation de Javascript en Java
rhino nom-fichier.js
utiliser print au lieu de document.write ou alert
15 / 81
Developpement
WebJavascript et Ajax
Le Langage Javascript
16 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
et specificit
Fonctionnalites
es
Description rapide
17 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Specificit
es
liees
a` la securit
Specificit
es
e
ne peut pas lire ou ecrire
`
dans le systeme
de fichier de la
machine
ne peut executer
de programme externe
pas de connexion autre que serveur web
18 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Specificit
es
liees
a` la securit
Specificit
es
e
ne peut pas lire ou ecrire
`
dans le systeme
de fichier de la
machine
ne peut executer
de programme externe
pas de connexion autre que serveur web
19 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Specificit
es
liees
a` la securit
Specificit
es
e
ne peut pas lire ou ecrire
`
dans le systeme
de fichier de la
machine
ne peut executer
de programme externe
pas de connexion autre que serveur web
20 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Les identificateurs
identificateurs
definition
` suivi de carateres
`
classique : caractere
ou
chiffres.
on peut utiliser le caractere
` souligne
on peut egalement
21 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Les identificateurs
identificateurs
definition
` suivi de carateres
`
classique : caractere
ou
chiffres.
on peut utiliser le caractere
` souligne
on peut egalement
22 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Les identificateurs
identificateurs
definition
` suivi de carateres
`
classique : caractere
ou
chiffres.
on peut utiliser le caractere
` souligne
on peut egalement
23 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Structures de controle
Structures de controle
`
du langage C :
Javascript possede
les structures de controle
if then else
for, while, do while
break, continue
switch
plus le for in (foreach) pour les tableaux
et les exceptions throw, try, catch
24 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Les variables
Variables
ees
par :
Les variables sont caracteris
ce sont des objets
labsence de typage statique (typage dynamique)
elles peuvent etre
a` tout moment
declar
ees
on peut utiliser le mot-cle var pour les declarer
25 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Les variables
Variables
ees
par :
Les variables sont caracteris
ce sont des objets
labsence de typage statique (typage dynamique)
elles peuvent etre
a` tout moment
declar
ees
on peut utiliser le mot-cle var pour les declarer
26 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Les variables
Variables
ees
par :
Les variables sont caracteris
ce sont des objets
labsence de typage statique (typage dynamique)
elles peuvent etre
a` tout moment
declar
ees
on peut utiliser le mot-cle var pour les declarer
27 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Les variables
Variables
ees
par :
Les variables sont caracteris
ce sont des objets
labsence de typage statique (typage dynamique)
elles peuvent etre
a` tout moment
declar
ees
on peut utiliser le mot-cle var pour les declarer
28 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Les fonctions
Fonctions
ees
par :
Les fonctions sont caracteris
ce sont des objets
elles peuvent etre
a` tout moment
declar
ees
on les declare
29 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Les fonctions
Fonctions
ees
par :
Les fonctions sont caracteris
ce sont des objets
elles peuvent etre
a` tout moment
declar
ees
on les declare
30 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Les fonctions
Fonctions
ees
par :
Les fonctions sont caracteris
ce sont des objets
elles peuvent etre
a` tout moment
declar
ees
on les declare
31 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Fonctions principales
eval(string) : evalue
le code Javascript
Number(var) : convertir en nombre
String(var) : convertir en chane
int parseInt(string[,radix]) : convertir en entier
en fonction de la base
float parseFloat(string) : convertir en reel
encoreURI(uri)
decodeURI(uri)
32 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
print(parseInt(ff,16)) ; // 255
var str= 256 ;
var x = 1 + str ;
print(x) ; // 1 256
var x =1 + Number(str) ;
print(x) ; // 257
print(eval(2 + 2 * 8 - 3)) ; // 15
// JSON
var person=eval("({ prenom : Sid, nom : Meyer })") ;
print(person) ; // object Object
print(person.prenom+ +person.nom) ; // Sid Meyer
var uri=encodeURI(http ://www.site.fr/x\n=1 ?value=2<3) ;
print(uri) ; // http ://www.site.fr/x%0a=1 ?value=2%3c3
33 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Objets de base
Objets de base en javascript
`
`
ere)
34 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Determiner
le type dun objet
linstruction typeof
var b=true ;
var s=coucou ;
var i=10 ;
var k ;
var tab=[1,2,3] ;
var p=null ;
var regex=/\w+/ ;
function f() { }
print(typeof b) ; // boolean
print(typeof s) ; // string
print(typeof i) ; // number
print(typeof f) ; // function
print(typeof k) ; // undefined
print(typeof tab) ; // object
print(typeof dummy) ; // undefined
print(typeof p) ; // object
print(typeof regex) ; // function
35 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Lobjet Boolean
Boolean
permet de representer
des valeurs booleeennes
1 attributs :
TRUE
FALSE
2
methodes
:
toSource()
toString()
36 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Utiliser Boolean
var vrai=Boolean(true) ;
var faux=Boolean() ;
var p=Boolean.TRUE ;
print(vrai) ; // true
print(faux) ; // false
print(vrai.toString()) ; // true
var p=vrai.valueOf() ;
print(p=+p) ; // p=true
37 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Lobjet Number
Number
permet de representer
les nombres entiers et les reels
1 attributs :
MAX VALUE
MIN VALUE
NaN
NEGATIVE INFINITY
POSITIVE INFINITY
methodes
:
toSource()
toString(radix)
toFixed(precision) notation avec chiffres apres
` la
virgule
38 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Utiliser Number
// 382.5
print(n2.toString(16)) ; // 1.8
print(n2.toFixed(2)) ;
// 1.50
39 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Lobjet String
String
`
permet de representer
les chanes de caracteres
1 attributs :
length longueur de la chane
2
methodes
:
integer charAt(index)
String concat(s1,s2,...)
integer indexOf(search[,fromIndex])
integer lastIndexOf(search[,fromIndex])
String slice(begin,end) extraire la sous-chane
Array split(separator[,limit])
String substr(start,length) extraire la
sous-chane
String toLowerCase()
String toUpperCase()
40 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
`
Lobjet String et les expressions reguli
eres
`
Methodes
en rapport avec les expressions reguli
eres
`
permet de representer
les chanes de caracteres
Array match(regex)
Boolean search(regex)
Boolean replace(regex,newstr or function)
41 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Utiliser String
print(coucou.length) ; // 6
var text=papa
fume la pipe ;
print(text.indexOf(pa)) ; // 0
print(text.lastIndexOf(pa)) ; // 2
print(text.split( )) ; // papa,,,,fume,,la,pipe
print(text.slice(8,-2)) ; // fume la pi
print(text.match(/p\w+/g)) ; // papa,pipe
var newtext=text.replace(/pipe/,cigarette);
print(newtext) ; // papa
fume la cigarette
42 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Lobjet RegExp
RegExp
`
permet de representer
les expressions reguli
eres
methodes
:
test(string) retourne true si il y a correspondance
exec(string) retourne un tableau qui contient les motifs
43 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
`
Rappel des expressions reguli
eres
`
Expression reguli
ere
elle peut etre
` souligne
ou caractere
\d chiffre
\s un espace ou \t\n\f \v
44 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Utiliser RegExp
var regex1=/\d+/ ;
var regex2=new RegExp("(\\d+)","g") ;
var regex3=/(\d+)\/(\d+)\/(\d+)/ ;
var dob=30/09/1970 ;
print(dob.match(regex1)) ; // 30
print(dob.match(regex2)) ; // 30/09/1970
print(regex2) ; // /(\d+)/g
print(regex3.test(dob)) ; // true
print(regex3.exec(dob)) ; // 30/09/1970,30,09,1970
print(dob.replace(regex3,$3-$2-$1)) ; // 1970-09-30
45 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Lobjet Math
Math - les attributs
permet de realiser
les calculs complexes
E : constante dEuler (2,718)
LN2 : logarithme nep
erien
de 2 (0,693)
LN10 : logarithme nep
erien
de 10 (2,302)
LOG2E : logarithme a` base 2 de E (1,442)
LOG10E : logarithme a` base 10 de E (0,434)
PI : valeur du nombre PI (3,14159)
SQRT1 2 : racine carree
de 1/2 (0,707)
SQRT2 : racine carree
de 2 (1,414)
46 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Lobjet Math
47 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Utiliser Math
print(Math.cos(Math.PI)) ; // -1
print(Math.sin(Math.PI)) ; //1.2246467991473532e-16
print(Math.sqrt(2)) ; //1.4142135623730951
print(Math.pow(2,10)) ; // 1024
print(Math.round(Math.sqrt(2))) ; // 1
print(Math.random()) ; //0.3946604376730234
48 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Lobjet Date
permet de representer
les dates
Date()
Date(milliseconds)
Date(y,m,d)
getDay(), getMonth(), getYear(), getFullYear()
getHours(), getMinutes(), getSeconds()
toGMTString
toLocaleString
toUTCString
49 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Utiliser Date
50 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Lobjet Array
permet de representer
et traiter les tableaux
1 attributs :
length
2
methodes
:
Array concat(array1,array2)
string join(string)
ement
51 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Lobjet Array
ements
el
sont n1, . . . , nk
slice(begin,end) : extrait une partie du tableau
splice(index,howMany,e1, ..., en : ajoute et
ements
supprime de nouveaux el
sort() : tri des el
ements
52 / 81
Developpement
WebJavascript et Ajax
du langage
Fonctionnalites
Utiliser Array
Exemple avec Array
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var a=[3,8,2,7] ;
print(a.length) ; // 4
print(a.reverse()) ; // 7,2,8,3
a.sort() ; print(a) ; // 2,3,7,8
var a=new Array(1,7,3,7,8,2,1) ;
for (i in a) {
print(i+ +a[i]) ; // 0 1, 1 7, ....
}
print(a.join( ;)) ; //1 ;7 ;3 ;7 ;8 ;2 ;1
var b=a.slice(2,4) ; print(b) ; // 3,7
a.splice(1,2,20) ;
print(a) ; // 1,20,7,8,2,1
function compare(a,b) {
return a-b ;
}
a.sort(compare) ; print(a) ; // 1,1,2,7,8,20
53 / 81
Developpement
WebJavascript et Ajax
La couche Objet en Javascript
La couche objet
54 / 81
Developpement
WebJavascript et Ajax
La couche Objet en Javascript
Caracteristiques
de la couche objet
La couche objet
differents
des autres langages objets. Faire du Javascript Objet
` deroutant.
est donc tres
`
Trois manieres
differentes
les objets de 3 manieres
`
On peut creer
differentes
creation
dun constructeur puis dune instance
au format JSON
creation
dune instance grace
55 / 81
Developpement
WebJavascript et Ajax
La couche Objet en Javascript
Caracteristiques
de la couche objet
La couche objet
differents
des autres langages objets. Faire du Javascript Objet
` deroutant.
est donc tres
`
Trois manieres
differentes
les objets de 3 manieres
`
On peut creer
differentes
creation
dun constructeur puis dune instance
au format JSON
creation
dune instance grace
56 / 81
Developpement
WebJavascript et Ajax
La couche Objet en Javascript
// create object
person=new Object() ;
// add properties
person.first name=Joe ;
person.last name=Dalton ;
// add method
person.display=function() {
print(this.first name+ +this.last name) ;
}
// use method
person.display() ;
57 / 81
Developpement
WebJavascript et Ajax
La couche Objet en Javascript
// create object
person=new Object() ;
// add properties
person.first name=Joe ;
person.last name=Dalton ;
// add predefined function
function display() {
print(this.first name+ +this.last name) ;
}
person.display=display ;
person.display() ;
58 / 81
Developpement
WebJavascript et Ajax
La couche Objet en Javascript
function Person(first,last) {
this.first name=first ;
this.last name=last ;
this.display=function() {
print(this.first name+ +this.last name) ;
}
}
person=new Person(Joe,Dalton) ;
person.display() ;
59 / 81
Developpement
WebJavascript et Ajax
La couche Objet en Javascript
serialisation
des objets
facilite de lecture
60 / 81
Developpement
WebJavascript et Ajax
La couche Objet en Javascript
var joe={
"first name" : "Joe",
"last name"
: "Dalton",
"display"
: function() {
print(this.first name+ +this.last name) ;
},
brothers : [
{ "name" : "Jack", age : 30 },
{ "name" : "Averell", age : 33 },
{ "name" : "William", age : 31 }
]
}
joe.display() ;
for (var i=0 ;i<joe.brothers.length ;++i) {
print(joe.brothers[i].name) ;
}
http://www.json.org/
61 / 81
Developpement
WebJavascript et Ajax
La couche Objet en Javascript
Format dechange
prec
62 / 81
Developpement
WebJavascript et Ajax
La couche Objet en Javascript
person=new Object() ;
person[first name]=Joe ;
person[last name]=Dalton ;
person[display]=function () {
print(this.first name+ +this.last name) ;
}
person.display() ;
63 / 81
Developpement
WebJavascript et Ajax
La couche Objet en Javascript
Heritage
Heritage
lheritage
au sens oriente objet nexiste pas : deux objets
appartiennent a` la meme
classe sils ont les memes
attributs et
memes
methodes.
heritage
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function display() {
print(this.first name+ +this.last name) ;
}
function Person(fname,lname) {
this.first name=fname ;
this.last name=lname ;
this.display=display ;
}
function Employee(fname,lname,salary) {
this.first name=fname ;
this.last name=lname ;
this.salary=salary ;
this.display=function() {
print(this.first name+ +this.last name+ +this.salary) ;
}
}
64 / 81
Developpement
WebJavascript et Ajax
La couche Objet en Javascript
Notion de prototype
Definition (Prototype)
un prototype represente
un ensemble dattributs et de
methodes
qui seront ajoutes
prototype
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function Person(first,last) {
this.first name=first ;
this.last name=last ;
}
var joe=new Person(Joe,Dalton) ;
// you can not use this :
// joe.display() ;
Person.prototype.first name=x ;
Person.prototype.last name=y ;
Person.prototype.display=function() {
print(this.first name+ +this.last name) ;
}
var jack=new Person(Jack,Dalton) ;
jack.display() ;
65 / 81
Developpement
WebJavascript et Ajax
La couche Objet en Javascript
dattribut
peut posseder
66 / 81
Developpement
WebJavascript et Ajax
Ajax
Ajax
Ajax
67 / 81
Developpement
WebJavascript et Ajax
Ajax
Ajax
Definition (Ajax - Asynchronous JAvascript and XML)
asynchrones
XML pour lechange
client-serveur
de donnees
Developpement
WebJavascript et Ajax
Ajax
Ajax
Definition (Ajax - Asynchronous JAvascript and XML)
asynchrones
XML pour lechange
client-serveur
de donnees
Developpement
WebJavascript et Ajax
Ajax
Ajax
70 / 81
Developpement
WebJavascript et Ajax
Ajax
Ajax
71 / 81
Developpement
WebJavascript et Ajax
Ajax
Ajax
72 / 81
Developpement
WebJavascript et Ajax
Ajax
Ajax
73 / 81
Developpement
WebJavascript et Ajax
Ajax
Ajax
74 / 81
Developpement
WebJavascript et Ajax
Ajax
XMLHttpRequest
attributs de XMLHttpRequest
Status : statut sous forme numerique
Not Found)
statusText : statut sous format texte
readyState : etat
enement
gestionnaire dev
responseText : reponse
Developpement
WebJavascript et Ajax
Ajax
XMLHttpRequest
Attention !
du serveur et quelles sont
lorsque lon a recu les donnees
:
pretes
a` etre
traitees
readyState = 4
Status = 200
76 / 81
Developpement
WebJavascript et Ajax
Ajax
XMLHttpRequest
methodes
de XMLHttpRequest
ouverture dune connexion pour envoi ou reception
de
77 / 81
Developpement
WebJavascript et Ajax
Ajax
un objet XMLHttpRequest
Creer
un objet XMLHttpRequest
Creer
78 / 81
Developpement
WebJavascript et Ajax
Ajax
un objet XMLHttpRequest
Creer
un objet XMLHttpRequest
Creer
79 / 81
Developpement
WebJavascript et Ajax
Ajax
XMLHttpRequest
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var my request=getXMLHTTPRequest() ;
var url=get text data.php ;
my request.open("GET", url, true) ;
my request.onreadystatechange=process data ;
my request.send(null) ;
function process data() {
if (my request.readyState==4) {
if (my request.status==200) {
var my text=my request.responseText ;
document.getElementById("text data").innerHTML=my text ;
}
}
}
80 / 81
Developpement
WebJavascript et Ajax
Ajax
a` Ajax
Frameworks Javascript lies
Frameworks
` grand nombre de frameworks ont et
e developp
pour
Un tres
es
le Web. Pami les plus connus, on peut notamment citer :
1
Prototype (www.prototypejs.org)
Scriptaculous (script.aculo.us)
jQuery (jquery.com)
Rico (openrico.org)
Dojo (dojotoolkit.org)
` ses specificit