DOM Ajax IndexedDB
DOM Ajax IndexedDB
Langage JS TP2
Définition
JavaScript (JS)
Brendan Eich
3
JavaScript (JS)
Langage de programmation qui ajoute
de l'interactivité à votre site web
<script>
console.log("Le script est exécuté !");
</script>
</head>
<body>
<h1>Mon titre</h1>
<p>Du contenu intéressant ici.</p>
</body>
</html>
<!DOCTYPE html>
<html> Js interne
<head>
<title>Ma page web</title>
</head>
<body>
<h1>Mon titre</h1>
<p>Du contenu intéressant ici.</p>
<script>
console.log("Le script est exécuté !");
</script>
</body>
</html>
<!DOCTYPE html> JS externe
<html>
<head>
<title>Ma page web</title>
<script src="mon_script.js"></script>
</head>
<body>
<h1>Mon titre</h1>
HTML contenu
<p>Du downloadintéressant
analyser exécuter
ici.</p> HTML
</body>
</html> time
<!DOCTYPE html> JS externe
<html>
<head>
<title>Ma page web</title>
<script async src="mon_script.js"></script>
</head>
<!DOCTYPE html>
<html>
<head>
<title>Ma page web</title>
Chrome devtools
<script>
console.log(" hello FSA ");
</script>
</head>
<body>
<h1>Mon titre</h1>
<p>Du contenu intéressant ici.</p>
</body>
</html>
10
DOM :
Document
Object Model
<!DOCTYPE html> Arbre DOM
(Document Object Model)
<html>
Document
<head>
<title> MonSite </title> html
<meta charset="utf-8">
head body
</head>
<body> title meta
</html>
<!DOCTYPE html> Arbre DOM
<html> Document
<head>
<title> MonSite </title> html
<meta charset=“utf-8">
</head> head body
<body>
<div> title div
<p> meta
apprendre html
MonSit p
<a href="https://www.coursera.org" >
e Utf-8
coursera
</a>
Apprendre
</p>
html
a
</div>
</body> href
Coursera
3
Arbre DOM
4
2
JS
navigateur
1 Code HTML
Qu'est-ce que le DOM
document.getElementById("id") ;
19
getElementById( )
<div id="monDiv">
<span id="monSpan">
Bonjour le monde !
</span>
</div>
<script>
let el = document.getElementById("monSpan") ;
console.log(el) ;
// <span id="monSpan"> Bonjour le monde ! </span>
</script>
getElementsByTagName( )
Permet de récupérer tous les éléments HTML d'une
page web qui ont un nom de balise spécifique
document.getElementsByTagName("div") ;
21
getElementsByTagName( )
<div id="monDiv">
<P> Bonjour le monde ! </P>
</div>
<P> Deuxième paragraphe </P>
<script>
let par = document.getElementsByTagName("P") ;
console.log(par[0]) ; // <P> Bonjour le monde ! </P>
console.log(par[1]) ; // <P> Deuxième paragraphe </P>
</script>
getElementsByName( )
est utilisée pour sélectionner tous les éléments HTML
d'une page web qui ont un attribut name spécifique
document.getElementsByName("myname") ;
23
getElementsByName( )
<form>
<input type="checkbox" name="fruit" value="pomme">
<input type="checkbox" name="fruit" value="banane">
</form>
<script>
let fr = document.getElementsByName("fruit") ;
console.log(fr[0]) ;
// <input type="checkbox" name="fruit" value="pomme">
</script>
getElementsByClassName( )
Retourne la liste des éléments HTML à partir de leur
classe
document.getElementsByClassName("myClass") ;
25
getElementsByClassName( )
<ul>
<li class="item"> JAVA </li>
<li class="item"> C++ </li>
</ul>
<script>
let lang = document.getElementsByClassName("item") ;
console.log(lang[1]) ;
// <li class="item"> C++ </li>
</script>
querySelector( )
Permet de sélectionner le premier élément HTML
d'une page web qui correspond à un sélecteur CSS
donné.
document.querySelector("sélecteur css") ;
27
querySelector( )
<ul>
<li class="item"> JAVA </li>
<li class="item"> C++ </li>
</ul>
<script>
let lang = document.querySelector(".item") ;
console.log(lang) ;
// <li class="item"> JAVA </li>
</script>
28
querySelector( )
<ul>
<li class="item1"> PHP </li>
<li class="item2"> C++ </li>
<li class="item2"> C </li>
</ul>
<script>
let lang = document.querySelector(".item2") ;
console.log(lang) ;
// <li class="item2"> C++ </li>
</script>
29
querySelector( )
<ul>
<li class="item1"> JAVA </li>
<li class="item2"> C++ </li>
<li id="item3"> C </li>
</ul>
<script>
let lang = document.querySelector("#item3") ;
console.log(lang) ;
// <li class="item2"> C </li>
</script>
querySelectorALL( )
Permet de sélectionner tous les éléments HTML
d'une page web correspondant à un sélecteur CSS
donné.
document.querySelectorALL("sélecteur css") ;
31
querySelectorAll( )
<ul>
<li class="item"> JAVA </li>
<li class="item"> C++ </li>
<li class="item"> C </li>
</ul>
<script>
let lang = document.querySelectorAll(".item") ;
console.log(lang[2]) ;
// <li class="item2"> C </li>
</script>
Résumé
document.getElementById("myId")
document. getElementByTagName("p")
document. getElementByClassName("title")
document. querySelectorAll("#card")
DOM
La navigation dans le
DOM html
permet de se déplacer head
d'un élément à un body
autre en utilisant les
relations de parenté title meta div
entre les éléments
p a
Document
La navigation dans le
DOM html
permet de se déplacer head
d'un élément à un body
autre en utilisant les
relations de parenté title meta div
entre les éléments
p a
36
childNodes
permet d'accéder à tous les éléments enfants directs
d'un élément HTML donné
html <script>
let el =document.querySelector("html");
let Els = el.childNodes ;
ChildNodes // Els[0] → <head> </head>
head body </script>
37
parentNode
html <script>
let el =document.querySelector("body");
let Pel = el.parentNode ;
ParentNode // Pel → <head> </head>
head body </script>
38
firstChild
html <script>
let els =document.querySelector("html");
FirstChild
let premierElement = els.firstChild;
// <head> </head>
head body </script>
39
LastChild
La propriété lastChild renvoie le dernier nœud enfant
d'un élément.
nextSibling
elle renvoie le nœud qui suit immédiatement un
nœud donné
html
<script>
let el =document.querySelector("head");
let bodyElement = el.nextSibling ;
head body
// <body> </body>
NextSibling </script>
41
previousSibling
elle renvoie le nœud qui précède immédiatement un
nœud donné
el. parentNode
el.FirstChild
el.LastChild
Navigation
DOM el.NextSibling
el.previousSibling
DOM
innerHTML
<div id="monDiv">
Avant
<script>
let mydiv = document.getElementById("monDiv") ;
mydiv.innerHTML = " <h1> hello FSA ! </h1>"
</script>
<div id="monDiv">
Apres
innerHTML
<div id="monDiv">
Avant
<script>
let mydiv = document.getElementById("monDiv") ;
mydiv.innerHTML += " <h1> hello FSA ! </h1>"
</script>
<div id="monDiv">
Apres
innerText
<div>
Avant
<script>
let myPar = document.getElementById("monPar") ;
myPar.innerText = " Bonjour le monde ! " ;
</script>
<div>
Apres
el.setAttribute("Nom" , "valeur");
50
setAttribute
<div>
Avant
<script>
let image = document.getElementById("profil") ;
image.setAttribute("src", "photo2.jpg") ;
</script>
<div>
Apres
setAttribute
<div>
Avant
<script>
let T = document.getElementById("title") ;
T.setAttribute("style", "color:red") ;
</script>
<div>
Apres
el.style.propriete = "valeur";
53
Style
<div>
Avant
<script>
let T = document.getElementById("title") ;
T.style.color = "red" ;
</script>
<div>
Apres
el.classList.add = "newClass";
55
ClassList
<div>
Avant
<div id="monDiv">
<h1> Bonjour le monde ! </h1>
Apres
el.remove();
59
Supprimer un élément
<div>
Avant
<script>
let el = document.getElementById("monP") ;
el.remove() ;
</script>
<div>
Apres
</div>
Résumé InnerHTML
InnerText
Style
SetAttribute()
ClassList()
Modifier les
éléments
createElement()
Remove()
DOM
btnEl.onevent = function() { } ;
Acheter
évènement
Utilisateur Fonction
64
OnClick
<script>
let btn = document.getElementById("buy") ;
btn.onclick = function() {
// Code à exécuter au clic
};
</script>
65
addEventListener
<script>
let btn = document.getElementById("buy") ;
btn.addEventListener('click', function() {
// Code à exécuter au clic
});
</script>
66
addEventListener
<script>
let btn = document.getElementById("buy") ;
function commander() {
// Code à exécuter au clic
};
btn.addEventListener('click’, commander);
</script>
67
ondblclick onkeypress
Onfocus onLoad
onmouseover onSubmit
el.onevent = function() { } ;
el.addEventListener( )
Événements
déclencheurs
AJAX
Asynchronous Javascript and XmlHttpRequest
70
Communication Client-Serveur
Le mode Synchrone
Client
Serveur
1 Requête HTTP
3 Réponse
Communication Client-Serveur
Le mode asynchrone
Client
Serveur
Requête HTTP
1 GET /APi/products
3 HTTP/2 200 OK
content/type: application/json
[{id: 123 , name: "Espresso", price: 7 }] 2
AJAX
Asynchronous Javascript and XmlHttpRequest
XmlHttpRequest (XHR)
un objet JavaScript (API) qui permet d'effectuer des
requêtes HTTP asynchrones.
Introduction à fetch()
'
fetch('api.example.com/data', {options} )
'
fetch('api.example.com/add’, {
method: 'POST',
headers: { "Content-type": "application/json " },
body: { … }
})
.catch()
'
fetch('api.example.com/data’, {
method: 'Get',
headers: { "Content-type": "application/json " }
})
.then(function (res) => { return res.json(); } )
.then(function (data) => { console.table(data) )
80
fetch('api.example.com/data) ’, {
method: 'Get',
headers: { "Content-type": "application/json " },
}
.then(function (res) => { return res.json(); } )
.then(function (data) => { console.table(data) )
.catch(function (err) => { console.log( err ); } )
81
'
fetch('api.example.com/add', {
method: 'POST',
headers: { "Content-type": "application/json " },
body: JSON.stringify({
title:'Espresso',
price:'7.5’
})
})
82
'
fetch('api.example.com/add', {
method: 'POST',
headers: { "Content-type": "application/json " },
body: JSON.stringify({
title:'Espresso',
price:'7.5’
})
})
83
'
fetch('api.example.com/add', {
method: 'POST',
headers: { "Content-type": "application/json " },
body: JSON.stringify({
title:'Espresso',
price:'7.5’
})
}) Les données envoyées avec la requête. Peut
être du texte, JSON, un FormData, etc
84
'
'
Offline First
La connexion Internet peut être
instable ou inexistante lors de vos
déplacements.
88
Offline First
le web, même sans connexion.
En mode online
Internet
Web App Web storage
Cache API
91
En mode offline
Internet
Web App Web storage
Cache API
92
Cookies
Local Storage
Web Storage Session Storage
Les technologies
essentielles InedexedDB
93
Méthode 2
Terminologie
Navigateur
DB1 DB2
Object Stores
IndexedDB
97
DB1
Préférences
Produits
Nom de la base de
Version
données
99
IndexedDB.Open(dbName, dbVersion)
Database
NO yes
exists ?
dbVersion >
Upgrade yes current version
no
dbVersion =
Success yes no Fall
current version
100
open.onupgradeneeded = function() {
};
101
open.onupgradeneeded = function() {
// Creates an object store: Magasin d’objets
var db = openReq.result;
var store = db.createObjectStore("ProductStore",
{keyPath: "id"});
};
Clé primaire
102
open.onupgradeneeded = function() {
var db = open.result;
var store = db.createObjectStore("MyObjectStore",
{keyPath: "id"});
};
open.onsuccess = function() {
// Start a new transaction
var db = open.result;
var tx = db.transaction("MyObjectStore", "readwrite");
var store = tx.objectStore("MyObjectStore");
};
104
ProductStore
# (key-path) id value
{ id: 123 ,
0 123 name: "Espresso",
price: 7 }
{ id: 124,
1 124 name: "Blend",
price: 13 }
105