Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
1
Formateur
Anis ASSAS
• Ingénieur en informatique
• Enseignant universitaire
(Maitre Technologue à l’ISET Djerba)
Email : assas_anis@yahoo.fr
2
Fiche formation
o Durée : 3 jours
o Prérequis :
• Concepts de base de la programmation : variables, opérateurs, fonctions, classes/objets, tableau, …
o Objectifs :
• Différencier les notions de base telles que : Internet et Web et découvrir le fonctionnement du Web.
• Apprendre les bases de HTML et être capable de construire des squelettes de sites Web et des
structures essentielles.
• Créer des mises en page avec CSS
• Apprendre les fondamentaux de JavaScript.
o Méthodes pédagogiques :
• Notions théoriques et notes de cours
• Démonstrations et activités pratiques
3
Plan de la formation
2 Le langage HTML
Java Script
5
Le langage Java Script : Plan
JavaScript : Les fondamentaux
o Données et opérateurs
o Tableaux
o Traitement conditionnel et itératif
o Fonctions
o Les objets en JavaScript Java Script
Evènements et données
o Evénements HTML
o DOM HTML
o Gestion des événements
o Web storage : les cookies, localStorage et sessionStorage
o Gestion des URLs
Gestion des formulaires
o Formulaire HTML
o Validation des formulaires
o Les expressions régulières 6
Introduction
• JavaScript est un langage de scripts qui est incorporé aux balises Html.
• Il permet d'améliorer l'interactivité des pages Web. Il est donc une extension du
code Html.
• Les scripts, qui s'ajoutent aux balises Html, sont gérés et exécutés par le browser
lui-même sans devoir faire appel aux ressources du serveur (langage côté client).
• Créé par Brendan Eich
• Initialement développé par Netscape et s'appelait alors LiveScript.
• Adopté à la fin de l'année 1995, par la firme Sun (qui a aussi développé Java), il a
pris alors le nom de JavaScript.
• Attention : JavaScript n’est pas Java
7
Introduction
JavaScript et Web2.0
• Appellations
• Web Social
• Web Participatif
• Principes
• Permettre l'interaction et la collaboration entre les utilisateurs
• Contenu généré dynamiquement et mis à jour fréquemment
• Technologies
• Forte utilisation du JavaScript pour supporter l'interactivité et la mise à jour du contenu
• Nécessité d'avoir un contenu bien formé et valide : XHTML
8
JavaScript : Vue d’ensemble
9
Standardisation
• ECMAScript (https://www.ecma-international.org) :
• Ensemble de normes standardisées par l’organisation européenne Ecma International
pour l’utilisation des langages de programmation du type Script.
10
Intégration du code JavaScript
<script type='text/javascript'>
instructions
</script>
11
Les constantes et les variables
• Les constantes
• Mot clé : const
• Nécessite une initialisation au moment de la création
• Ne peut pas changer de valeur après initialisation
12
Les constantes et les variables
• Exemples :
13
JavaScript : Les types de données
Typage :
• Statique :
• On déclare le type de données lors de la création de la variable
• Dynamique fort :
• Après l'affectation d'une valeur d'un type donné la variable ne peut plus changer de
type
• Dynamique faible :
• On peut changer le type de la variable selon la valeur affectée
Conversion :
• Vers une chaîne de caractères :
• La fonction toString()
• Vers un numérique :
• Objet Number offre les méthodes parseInt(String) et parseFloat(String)
15
Gestion des types de données
Exemples :
16
Les opérateurs
• Opérateurs d'égalité :
== === != !==
17
Les opérateurs
• Opérateurs logiques
• Et : &&
• Ou : ||
• Non : !
• Opérateurs relationnels
< > <= >=
• Opérateurs d'affectation :
• +=
• -=
• /=
• *=
• %=
19
Les tableaux
• Objectif :
• Stocker plusieurs valeurs dans une seule variable
• Exemples de déclarations :
var langages = ['JavaScript', 'Java', 'Python']
• Remarques :
• Chaque élément d'un tableau peut être de n'importe quel type (exemple : l'élément
d'un tableau peut être un tableau)
• Chaque élément dans un tableau est accessible via son indice (exemple : langages[2])
• slice() /* permet de retourner un sous tableau dont on peut spécifier l'indice de son
premier élément, et optionnellement l'indice de l'élément qui marquera la fin et qui
n'est pas inclus */
22
Les tableaux
let t1 = [1,2,3]
console.log(t1.toString())
console.log(t1.join(":"))
let t2= ['A','B','C']
let t3=t1.concat(t2)
console.log(t3)
let t4 = t3.slice(1,4)
console.log(t4)
let t5 = t4.concat(t3)
console.log(t5)
console.log(t5.sort())
console.log(t5.reverse())
•
23
Traitement conditionnel
let test = isNaN(val) ? « Non valeur numérique" : "c'est une valeur numérique";
24
Traitement itératif
• Boucle for :
25
Traitement itératif
26
Traitement itératif
27
Les fonctions
• Déclaration :
function nomDeFonction( liste de paramètres séparés par des virgules){
instructions;
}
• Exemple :
28
Les fonctions
29
Les fonctions
• Fonctions fléchées :
let getNombre = () => {
return Math.random() ;
}
console.log(getNombre());
• Notion d’objet :
• JavaScript est basé sur la notion d’objet. Un objet est un ensemble de
propriétés.
• Une propriété associe un nom à une valeur. La valeur d'une propriété peut être
une fonction : elle sera alors appelée méthode de l'objet.
32
Déclaration d’objets : avec initialisation
• Le mot-clé this désigne l’objet en cours. Il est utilisé afin d'affecter les valeurs
passées en arguments de la fonction, aux propriétés de l'objet :
34
Déclaration d’objets : avec new Object()
36
Déclaration de méthode
• Une méthode est une fonction associée à un objet. Elle est définie comme une fonction
affectée à une propriété de l'objet.
• Exemple1 : Soit la déclaration de la fonction suivante
function afficheVoiture() {
var result = "Une voiture de " + this.annee + " construite par " +
this.fabricant + " : " + this.modele;
document.write(result); }
• Cette méthode pourra être affectée à une propriété.
function Voiture(f, m, a, p) {
this.fabricant = f;
this.modele = m;
this.annee = a;
this.proprietaire = p;
this.afficheV = afficheVoiture; }
• Appel de la méthode afficheCar pour chaque objet : voiture1.afficheV(); 37
Déclaration de méthode
• Exemple 2 :
function Rectangle(x, y, l, h){
this.x = x; Deplacement de rect1 :
this.y = y; x = 12
this.largeur = l; Y = 12
this.hauteur = h;
this.surface = this.largeur * this.hauteur;
this.deplacer = deplacement; }
function deplacement(dx, dy) {
this.x = this.x + dx; this.y = this.y + dy; }
//instanciation d’objet et exploitation de la méthode
var rect1 = new Rectangle(10, 25, 60, 100);
rect1.deplacer(2,-13);
document.write("Deplacement de rect1 :<br />");
document.write("x = "+ rect1.x +"<br />");
document.write("y = "+ rect1.y +"<br />");
38
Déclaration de méthode
• Exemple 3 :
39
Déclaration de méthode
• Prototypes :
40
Notion de classe
41
Notion de classe : méthodes
• Définition de méthodes :
42
Notion de classe : héritage
• Notion d’héritage :
43
Quelques objets prédéfinis
• L’objet String :
Méthode Exemples
Création chaine chaine = "Bonjour Anis" ou encore chaine = new String("Bonjour
Anis")
Longueur chaine chaine.length // 12
Equivalents des balises chaine.big(), bold(), italics(), small(), strike(), sup(), sub(),
HTML fontsize(taille), fontcolor(couleur)
Extraire sous chaine chaine.slice(1,10); // onjour An chaine.slice(2);// njour Anis
chaine.substr(1,10) // onjour Ani chaine.split(" ")) // [Bonjour,Anis]
Extraire caractère chaine.charAt(1) // o
Chercher indice sous chaine chaine.indexOf("on") // 1 chaine.lastIndexOf("o")) // 4
Conversion en minuscules et chaine.toLowerCase()) // bonjour anis
en maj. chaine.toUpperCase() // BONJOUR ANIS
44
Quelques objets prédéfinis
• L’objet Math :
Méthode Exemples
abs() x = Math.abs(-3.85); // 3,85
ceil() x = Math.floor(3.85); // 4
floor() x = Math.floor(3.85); // 3
round() x = Math.round(3.85); // 4
x = Math.round(6.49); // 6
max(), min() x = Math.max(6,3.14); // 6
x= Math.min(6, 3.14); // 3.14
pow() x = Math.pow(2,3); // 8
random() x = Math.random(); // 0.6489534931546957
sqrt() x = Math.sqrt(9); // 3
45
Quelques objets prédéfinis
• L’objet Date :
Méthode Exemples
Création date d = new Date() //Date et heure actuelle
d = new Date("2022,03,20,10:30:00") //Sun Mar 20 2022 10:30:00
GMT+0100 (UTC+01:00)
Récupérer une date d.getDate()) //20 d.getDay()) //0 (dimanche) d.getMonth()) //2
d.getFullYear() //2022 d.getYear() //122 (2022-1900)
d.getHours() //10 d.getMinutes() //30 d.getSeconds() //0
Mettre à jour une date d.setDate(X), setDay(X), setMonth(X), setYear(X), ...
46
Java Script : les fondamentaux
Récapitulatif
JSpermet la déclaration des constantes et des
variables avec un typage dynamique faible
Tout tableau permet de stocker en une seule variable
une suite de valeurs et offre des propriétés et des
méthodes pour lesmanipuler
Plusieurs instructions permettent de contrôler le flux
d'exécution d'une façon conditionnelle et itérative
Plusieurs formes et façons permettent de déclarer des
fonctions en JS
Plusieurs façons permettent de créer des Objets en JS
47
JavaScript : Evénements et données
Evénements HTML
DOM HTML
Gestion des événements
Gestion des cookies
Gestion des URLs
48
Evénements HTML
50
Evénements HTML
• Exemple :
<html>
...
<body onload="doOnload()">
<button onclick=" doOnclick()"> Ecrire dans le log</button>
<script type =" text/javascript " src="exempleEvenements.js"></script>
</body>
</html>
function doOnload(){
console.log(" Fin de chargement de la page.");
}
let compteurClicks = 0 ;
function doOnclick(){
console.log("Vous avez cliqué sur le bouton pour la "+(++compteurClicks)+" fois");
}
51
DOM HTML : Document Object Model
• Le DOM est une interface de programmation qui permet à des scripts d'examiner et de modifier le contenu
du navigateur web.
• Lorsqu’une page est chargée, le navigateur crée une arborescence d’objets (Document Object Model)
qui décrit la page : Chaque nœud de l’arbre est considéré comme un objet.
• window
• Objet de plus haut niveau dans JavaScript
• Représente une fenêtre ouverte au sein d'un navigateur contenant la page Web en
cours
• Comporte des propriétés tels que : opener (informations sur la fenêtre qui a
ouvert la fenêtre en cours), navigator (informations sur le navigateur), etc.
• document
• Objet qui appartient à l'objet window
• Offre les méthodes et les propriétés nécessaires pour manipuler le DOM, tels que :
addEventListener(), setAttribute(), className, style, innerHTML, etc.
54
Objets du DOM
• Exemple :
<body>
<div id="navigator"></div>
<script>
let monNavigateur = window.navigator.appVersion //info. version du navigateur
let monDiv = document.getElementById("navigator") //trouver l’élément par id
monDiv.innerHTML = monNavigateur //changer le contenu html
monDiv.style.color = 'red' //changer la couleur du style
</script>
</body>
55
Objets du DOM : trouver les éléments
• Pour agir sur le DOM, il faut tout d'abord trouver des éléments particuliers
• Le DOM offre une API contenant des fonctions appropriées afin de trouver les éléments, dont :
56
Objets du DOM : modifier les éléments
• Pour agir sur des éléments trouvés dans le DOM, celui-ci offre une API permettant de changer
certains aspects d'un élément :
57
Objets du DOM
• Exemple :
<body>
<button onclick=" ouvrirWin()"> Ouvrir</ button>
<button onclick="fermerWin()">Fermer</button>
<button id="boutonImp" onclick="imprimerWin()" disabled="true">Imprimer</button>
<script>
var monWindow;
function ouvrirWin() {
monWindow = window.open("", "monWindow", "width= 200 , height= 100 " );
monWindow.document.write("<p>C'est ma nouvelle fenêtre ! </p>") ;
document.getElementById("boutonImp").disabled = false ;
}
function fermerWin() {
monWindow.close( ) ;
document.getElementById("boutonImp").disabled = true ;
}
function imprimerWin() { monWindow.print(); }
</script>
</body> 58
Gestion des événements
59
Gestion des événements
<input type="button" id="bt" onclick="alert('Vous avez cliqué sur '+ this.id +'.')"
value="Bouton" >
• Deuxième approche :
60
Gestion des événements
• Autre exemple :
<head> <script>
<style> function rouge(){
div { console.log("Type de l'événement :"+event.type)
padding: 50px; console.log("Target :"+event.target)
cursor: pointer; event.target.style="background-color:green"
}
</style> alert("rouge");
</head> event.stopPropagation();
<body> }
<div style="background-color:gold" function jaune(){
onclick="jaune()"> alert("jaune");
Parent }
<div style="background-color:red" </script>
onclick="rouge()"> </body>
Fils
</div>
</div>
61
Gestion des événements
• Ecouteur d’événements :
• Principe :
• On sélectionne un élément HTML
• Par exemple via : document.getElementById(id)
62
Gestion des événements
• Exemple :
<script>
var x= document.getElementById("bt")
x.addEventListener('click',f)
function f(){
alert('Vous avez cliqué sur '+ this.id +'.')
}
</script>
63
Gestion des événements
• Exercice :
• Objectif :
• On souhaite créer une page Web avec deux boutons
• Chaque bouton porte le nom d'une couleur
• Si on clique sur un bouton l'arrière plan de la page va prendre cette
couleur
• Démarche :
• Création d'une page HTML qui contient deux boutons
• Attribuer à chaque bouton et à la balise <body> un identificateur
• Relier la page HTML à un fichier JavaScript externe
• Dans le fichier JavaScript, on récupère les deux boutons dans des
variables
• On associe un écouteur d'événement à chaque bouton
• On écrit le code des fonctions : changeJaune() et changeOrange() qui
vont permettre de changer la couleur d'arrière-plan 64
Gestion des événements
function changeJaune(){
b.style.background="yellow"
}
function changeOrange(){
b.style.background="orange"
}
65
Gestion des cookies
• Présentation :
• Un cookie permet de sauvegarder une feuille de style choisie par un utilisateur
pour l'afficher quand il revient sur la page.
• Ensemble de données stockées dans un fichier texte de petite taille sur le client
pour un navigateur et associé à un domaine donné (serveur)
• A chaque envoi de requête http à un serveur, les cookies qui lui sont associés sont
automatiquement ajoutés
• Par défaut un cookie est supprimé lorsque le navigateur est arrêté, sinon lorsque
une date d'expiration est atteinte.
66
Gestion des cookies
• API JavaScript
• Exercice :
• Objectif :
• Une fois qu'on a choisi une couleur d'arrière plan, celle-ci est stockée dans un cookie
• Si la page est rechargée, on doit trouver la dernière couleur d'arrière plan choisie
68
Gestion des cookies
• Démarche :
• Ajouter une fonction setCookie(valeur) qui permet d'écrire un cookie qui stocke une
couleur donnée comme paramètre
• Ajouter une fonction getCookie() qui permet de récupérer le cookie, puis la valeur qui est
stockée dedans et la retourner.
• sessionStorage : stocke les données pour une connexion (les données sont
perdues lorsque l’onglet du navigateur est fermé)
71
LocalStorage et sessionStorage
• localStorage.length
• let p = JSON.parse(localStorage.getItem("person"));
73
LocalStorage et sessionStorage
if (window.localStorage) {
...
}
74
Manipulation des URLs
var go = document.getElementById("go")
go.addEventListener('click',allerGoogle)
function allerGoogle(){
window.location.replace("http://www.google.fr" );
}
• On peut également rédiger la page vers une autre adresse (la page qui fait la
redirection ne reste pas dans l'historique)
window.location.replace("http://www.google.fr" );
75
Gestion des événements
Récapitulatif
L'interactivité est basée sur la capture des
événements qui se produisent au niveau d'une
page
Une page Web peut être représentée sous forme
arborescente avec une API DOM permettant d'agir
sur son contenu
On peut répondre aux événements par des actions
sur le DOM HTML
Le JS permet de travailler avec les cookies et
également de passer vers d'autres pages Web
d'une façon programmée
76
JavaScript : Gestion des formulaires
Formulaire HTML
Validation des formulaires
Les expressions régulières
77
Formulaire HTML
• Formulaire HTML
• Moyen fréquemment utilisé pour
collecter des données de la part de
l'utilisateur
Syntaxe de base :
<form action="…" method="…">
...
</form>
• L'intérêt c'est que c'est le navigateur qui se charge de vérifier la validité des données saisies
dans les champs.
79
Gestion des Formulaires
• Pour récupérer les formulaires d'une page Web sous forme d'une collection :
• document.forms
• Exemple :
<form name="monForm" type="submit">
Nom : <input type="text" name="nom" id="nom"><br>
Prénom : <input type="text" id="prenom"><br>
<input type="button" id="bouton" value="Envoyer">
</form>
<script>
let b = document.getElementById("bouton")
b.addEventListener("click",f)
function f(){
let nom = document.forms["monForm"]["nom"].value
let prenom = document.forms["monForm"]["prenom"].value
console.log(document.forms)
console.log("Nom : "+nom+" Prenom : "+prenom)
}
</script>
81
Validation de formulaire
• Exercice :
• Un formulaire qui comporte un champ texte pour saisir le nom : déclencher une fonction
JavaScript suite à l'événement "onSubmit" du formulaire afin de vérifier la validité des
données.
Scénario 1 :
Succès
Scénario 2 :
Champ vide
82
Validation de formulaire
<script>
function valider(){
event.preventDefault()
let nom = document.forms["monForm"]["nom"].value
nom != "" ? alert("Bonjour "+nom) : alert("Il faut saisir le nom !")
}
</script>
83
Les expressions régulières : Définition
• Les expressions régulières sont des modèles utilisés pour vérifier des combinaisons
de caractères dans les chaînes de caractères
• Les expressions régulières sont utilisées pour effectuer des fonctions de recherches
et de remplacements sur le texte
• La construction des expressions régulières est basée sur des opérateurs, des méta
caractères et des modificateurs
• Opérateurs de groupe :
Opérateur Désignation Exemple
. Un caractère quelconque /./
() Un groupe de caractères en ordre /(bon)/
Un caractère parmi ceux entre crochets.
/[abc]/
S’il y a l’opérateur « - », ceci désigne un
[] /[m-z]/
intervalle
/[0-9[m-z]]/
On peut avoir une imbrication de crochets
85
Les expressions régulières : opérateurs
Opérateur Désignation
/^bon/ => chaîne qui commence par « bon »
^
/^[a-zA-Z]/=> chaine qui commence par un alphabet
/coeur$/ => chaîne qui se termine par coeur
$
/[0-9]$/ => chaîne qui se termine par un chiffre
NB : [^a-z] correspond à une exclusion d'un ensemble de caractères, c-a-d tout ce qui
n'est pas compris entre crochets.
86
Les expressions régulières : opérateurs
• Opérateurs de quantification :
Opérateur Désignation
? /a?/ => chaîne qui contient une lettre a ou aucune
/[0-9]?/ => chaîne qui contient un chiffre ou aucun
+ /a+/ => chaîne qui contient au moins une lettre « a »
* /a*/ => chaîne qui contient un nombre quelconque de « a »
(y compris zéro)
{n} /[a-z]{4}/ => chaîne qui contient exactement 4 lettres
{n,m} /[a-z]{4,8}/ => chaîne qui contient au minimum 4 et au
maximum 8 lettres
{n,} /[a-z]{4,}/ => chaîne qui contient au minimum 4 lettres
87
Les expressions régulières : opérateurs
• Méta-caractères et syntaxe :
Opérateur Désignation
\t Code de tabulation
\n Code de fin de ligne
\r Code de retour à la ligne
\s Code de séparation quelconque: espace blanc, tabulation, retour à la
ligne, etc.
\S Tout caractère autre qu'un espace
\d Tout caractère numérique. Equivaut à [0-9]
\D Tout caractère non numérique. Equivaut à [^0-9]
\w Tout caractère alphanumérique. Equivaut à [_A-Za-z0-9]
\W Tout caractère autre qu'alphanumérique. équivaut à [^_A-Za-z0-9]
88
Les expressions régulières : opérateurs
• Métacaractères et syntaxe :
Opérateur Désignation
\b Recherche un motif au début ou à la fin du mot dans une
chaine
/\bef/ => rechercher « ef » au début d'un mot
/ef\b/ => rechercher « ef » à la fin d'un mot
\B Recherche un motif là où il n’est pas au début ou à la fin
du mot dans une chaine
NB :
\ Arrête l’interprétation d’un caractère donné.
/\./ => le caractère « . » ne remplace pas tout caractère
mais le caractère « . » en lui même
89
Modificateurs
• Exemples :
• motif=/(me)/g ; // recherche globale de "me"
90
Méthodes de l’objet RegExp
• La méthode test() : recherche dans une chaîne un motif, et renvoie vrai ou faux
• Syntaxe : Motif.test(chaine)
• Exemple :
• chaine="les meilleures choses dans la vie sont libres";
• motif=new RegExp("lib") ;
• alert(motif.test(chaine)); //affiche true
• La méthode exec() : recherche dans une chaîne un motif, et renvoie la première
occurrence qui satisfait le motif. Si aucune correspondance n'est trouvée, elle renvoie null.
Le résultat est un tableau à une seule case
• Syntaxe : motif.exec(chaine)
• Exemple :
• chaine="les meilleures choses dans la vie sont libres";
• motif=new RegExp("e") ; t=motif.exec(chaine);
• alert(t[0]); //affiche e 91
Méthodes de l’objet RegExp
• Exemples :
• motif=/(le)/; alert(chaine.replace(motif,"**"));
• motif=/(le)/g; alert(chaine.replace(motif,"**"));
• motif=/[àâä]/gi; alert(chaine.replace(motif,"A"));
• motif1=/[àâä]/gi;
• motif2=/[éèê]/gi
• alert(chaine.replace(motif1,"A").replace(motif2,"E"));
93
Les expressions régulières
• Exercice :
• Un formulaire avec un champ e-mail dont il faut vérifier sa conformité aux règles
suivantes :
Commence par une série de chiffres, lettres, points, tiret et tiret bas
Contient un @
Contient un domaine qui est une série de chiffres, lettres, points, tirets et
tirets bas
Se termine par un point et puis deux ou trois caractères alphabétiques.
94
Les expressions régulières
95
Gestion des formulaires
Récapitulatif
L'interactivité est basée sur la capture des
événements qui se produisent au niveau d'une
page