Cours
Interactions entre l'homme et la machine sur le Web
Une page web n'est plus une simple page à lire : on y clique sur des boutons, on remplit des formulaires, on fait défiler des cartes.
Cette interface homme-machine (IHM) repose sur des composants graphiques décrits en HTML, dont le comportement est programmé en JavaScript, en réponse à des événements.
Derrière l'écran, le navigateur (le client) dialogue avec un serveur grâce au protocole HTTP. Ce chapitre apprend à lire le code d'une page interactive, à distinguer ce qui s'exécute côté client et côté serveur, et à comprendre comment un formulaire transmet ses données.
1. Les composants graphiques d'une page
1.1 HTML décrit, CSS habille, JavaScript agit
| Langage | Son rôle | Exemple |
|---|---|---|
| HTML | décrire la structure et les composants | titres, paragraphes, boutons, champs |
| CSS | décrire l'apparence | couleurs, tailles, disposition |
| JavaScript | décrire le comportement | ce qui se passe quand on clique |
Le navigateur lit ces trois langages et affiche la page.
Voici une page qui utilise les trois. Change la couleur, le texte du bouton, le message, puis actualise l'aperçu.
1.2 Les composants d'interaction
| Composant | Code HTML | Rôle |
|---|---|---|
| bouton | <button id="ok">Valider</button> | déclencher une action |
| champ de texte | <input type="text" id="nom"> | saisir une valeur |
| case à cocher | <input type="checkbox" id="cgu"> | choisir oui ou non |
| bouton radio | <input type="radio" name="taille" value="M"> | choisir une option parmi plusieurs |
| liste déroulante | <select id="pays"><option>France</option></select> | choisir dans une liste |
| zone de texte | <textarea id="message"></textarea> | saisir plusieurs lignes |
| lien | <a href="page2.html">Suite</a> | naviguer vers une autre page |
Les voici tous réunis. Ajoute une option à la liste, ou un troisième bouton radio.
Ici, le bouton ne fait rien : aucun comportement ne lui a encore été associé. C'est l'objet de la partie suivante.
2. Les événements
2.1 Un événement, une fonction
| Événement | Se produit quand… |
|---|---|
click | on clique sur le composant |
input | on saisit un caractère dans un champ |
change | la valeur d'un composant a changé |
keydown | une touche est pressée |
mouseover | la souris survole le composant |
submit | un formulaire est envoyé |
load | la page a fini de se charger |
2.2 Ce qu'il faut savoir lire et modifier
Voici un compteur de clics. La variable compteur est déclarée en dehors de la fonction : elle garde sa valeur d'un clic à l'autre.
Correction · Des solutions possibles
a) On remplace compteur + 1 par compteur + 2.
b) On ajoute <button id="zero">Remettre à zéro</button>, puis dans le script :
function remettre() {
compteur = 0;
document.getElementById("nb").textContent = compteur;
}
document.getElementById("zero").addEventListener("click", remettre);c) Au début de la fonction saluer, après la lecture de p :
if (p === "") {
document.getElementById("message").textContent = "Écris ton prénom";
return;
}JavaScript ressemble à Python, avec quelques différences de syntaxe.
let compteur = 0;
function clic() {
compteur = compteur + 1;
if (compteur === 10) {
console.log("Dix clics !");
}
}compteur = 0
def clic():
global compteur
compteur = compteur + 1
if compteur == 10:
print("Dix clics !")3. Le dialogue client-serveur
3.1 Requête et réponse HTTP
Une requête contient une méthode (GET pour obtenir, POST pour envoyer des données), une URL et des en-têtes.
Le serveur effectue des calculs : lire un fichier, interroger une base de données, exécuter un programme en Python ou en PHP.
Il renvoie une réponse : un code, puis un contenu (page HTML, image, données). Le client traite la réponse : il affiche la page et exécute son JavaScript.
| Code | Signification |
|---|---|
| succès | |
| ressource introuvable | |
| erreur du serveur |
GET /recherche?q=nsi&page=2 HTTP/1.1 ← requête du client
Host: www.exemple.fr
HTTP/1.1 200 OK ← réponse du serveur
Content-Type: text/html; charset=utf-8
<!DOCTYPE html><html>…</html>
3.2 Qui exécute quoi, et dans quel ordre ?
| Étape | Où | Quoi |
|---|---|---|
| 1 | client | l'utilisateur clique un lien ou valide un formulaire ; le navigateur construit la requête |
| 2 | réseau | la requête voyage jusqu'au serveur |
| 3 | serveur | le programme du serveur calcule la réponse : accès à la base de données, génération de la page |
| 4 | réseau | la réponse revient |
| 5 | client | le navigateur affiche la page et exécute son JavaScript |
3.3 Ce que le client mémorise et retransmet
C'est ce qui permet de rester connecté d'une page à l'autre, car HTTP ne garde aucun souvenir entre deux requêtes.
Le client mémorise aussi un cache (images et fichiers déjà téléchargés) et l'historique.
3.4 Transmission chiffrée : HTTPS
HTTPS ajoute le chiffrement, grâce au protocole TLS : le contenu des requêtes et des réponses devient illisible pour un tiers.
Un certificat garantit en plus l'identité du serveur : c'est le cadenas affiché par le navigateur.
On chiffre dès qu'il y a des données personnelles, un mot de passe, un paiement. Aujourd'hui, la quasi-totalité des sites utilisent HTTPS.
4. Les formulaires : GET ou POST
4.1 Un formulaire simple
<form action="/inscription" method="post">
<input type="text" name="pseudo" />
<input type="password" name="mdp" />
<input type="submit" value="S'inscrire" />
</form>Quand l'utilisateur valide, le navigateur envoie au serveur, à l'adresse indiquée par action, les couples nom=valeur de tous les champs qui ont un attribut name.
La méthode décide de la façon de les envoyer.
4.2 GET : les paramètres dans l'URL
Avec method="get", les paramètres sont ajoutés à l'URL après un ?, et séparés par &.
Exemple : /recherche?q=nsi&page=2.
La page ci-dessous construit l'URL qu'un formulaire GET enverrait, sans rien envoyer. Saisis une recherche, puis ajoute un champ name="langue".
4.3 POST : les paramètres dans le corps
Avec method="post", les paramètres sont placés dans le corps de la requête : ils sont invisibles dans l'URL, et leur taille n'est pas limitée.
| Critère | GET | POST |
|---|---|---|
| paramètres | dans l'URL (?a=1&b=2) | dans le corps de la requête |
| visibilité | visibles, conservés dans l'historique | invisibles dans l'URL |
| taille | limitée | grande (fichiers) |
| usage | obtenir, rechercher, filtrer | créer, modifier, se connecter |
| favoris, partage | oui | non |
5. Exemple résolu pas à pas
On donne la page suivante. Essaie-la avant de répondre.
Correction · Question a
Un champ numérique prix, qui peut traiter input et change.
Une case à cocher etudiant, qui peut traiter change.
Un bouton calc, dont l'événement click est associé au gestionnaire calculer.
Un paragraphe total, modifié par le script.
Correction · Question b
p vaut . La case est cochée, donc p devient .
Le paragraphe affiche « Total : 6 € ».
Correction · Question c
function calculer() {
let p = Number(document.getElementById("prix").value);
if (p < 0) {
document.getElementById("total").textContent = "Prix invalide";
return;
}
if (document.getElementById("etudiant").checked) {
p = p * 0.75;
}
document.getElementById("total").textContent = "Total : " + p + " €";
}Correction · Question d
Sur le client : aucune requête n'est envoyée, tout se passe dans le navigateur.
Pour un paiement, le serveur doit recalculer le prix à partir de ses propres données, car le JavaScript du client peut être modifié par l'utilisateur.
À retenir
Révise ce chapitre avec KlarIA
Tuteur qui t'explique pas à pas, quiz pour t'entraîner, flashcards pour mémoriser. Gratuit.
Créer mon compte gratuitement→