223 234
1-6 1-5
7-10 6-10
11-16 11-14
17-22 15-17
23-27 18-22
28-30 23-25
31-33
34

INTERACTIONS SUR LE CLIENT WEB

Le “World Wide Web”, communément appelé “WWW” ou plus simple “Web” a été développé au CERN (Centre Européen pour la Recherche Nucléaire en Suisse) par le Britannique Sir Timothy John Berners-Lee et le Belge Robert Cailliau au début des années 90.

A cette époque les principaux centres de recherche mondiaux sont déjà connectés entre eux via Internet. Tim Berners-Lee met au point le système (le Web) permettant, à partir d’un document, de consulter d’autres documents en cliquant sur des mots clés, appelés liens hypertextes ou hyperliens.

La toute première page Web de l’histoire est encore disponible aujourd’hui : http://info.cern.ch/hypertext/WWW/TheProject.html

Les trois piliers du Web sont :

Web et Internet sont deux choses différentes. Il est important de ne pas les confondre :

Ainsi, le Web s’appuie sur Internet, et non pas l’inverse.

1 - Le langage HTML

1.1 Définition

HTML est un langage de balisage permettant d’écrire de l’hypertexte, en anglais : Hypertext Markup Language, généralement abrégé HTML. Il permet donc de rédiger, de structurer et de mettre en forme le contenu de pages Web, mais aussi d’inclure des éléments multimédias, des formulaires de saisie, et des programmes informatiques.

Grâce au HTML nous allons pouvoir, dans un navigateur (Firefox, Chrome, Opera,…), afficher du texte, des images, des hyperliens (liens vers d’autres pages web)… etc. HTML n’est pas un langage de programmation (comme le Python par exemple), il n’y aura donc pas de SI ALORS SINON ou de REPETER JUSQU’A… C’est un langage de description seulement.

HTML est un langage informatique utilisé pour créer des pages web. L’acronyme signifie HyperText Markup Language, ce qui signifie en français “langage de balisage d’hypertexte”. HTML n’est donc PAS un langage de programmation (comme Python par exemple), mais un langage de description

1.2 Outils de développement

Pour coder en HTML, un simple éditeur de texte suffit (bloc-notes, notepad++, Geany, visualstudio …) mais il est aussi possible d’utiliser des éditeurs et simulateur de pages Web en ligne comme replit, jsfiddle , liveweave, codepen ou jsbin

Dans un premier temps nous allons fonctionner avec une “copie” de jsbin disponible via ce lien en nous concentrant pour l’instant uniquement sur la zone HTML et la zone Output.

1.3 Les balises

Entrons dans le vif du sujet …

Voici du code HTML :

<h1>Ceci est un titre</h1> <h2 >Et voici un sous-titre</h2> <p>Voici un <strong>mot</strong>. C’est beau, non ? </p>

@1 Remplacer le code présent dans la zone HTML de cet éditeur en ligne, par le code HTML ci-dessus, et observer l’affichage dans la zone OUTPUT.

Résultat :

Chaque élément HTML d’une page est composé de trois parties :

Une balise ouvrante est de la forme <nom_de_la_balise>, une balise fermante est de la forme </nom_de_la_balise>.

Remarque : Quelques rares éléments de page n’ont qu’une balise ouvrante et un contenu (pas de balise fermante). Nous verrons cela plus loin.

Des éléments peuvent contenir d’autres éléments ex : l’élément <strong>mot</strong> est contenu dans l’élément <p>Voici un <strong>mot</strong> . C’est beau, non ? </p>.

Il est donc important d’imbriquer correctement les balises entre elles, par exemple ici : l’ouverture <strong> puis la fermeture </strong> se sont faites entre l’ouverture <p> et la fermeture </p>.

Le code HTML ci-dessous ne respecte pas une imbrication correcte des éléments entre eux :

<balise1> <balise2> </balise1> </balise2>

@2 Corriger le code HTML écrit ci-dessus afin de respecter une imbrication correcte :

Réponse :
<balise1> <balise2> </balise2> </balise1>

Il est important de comprendre que chaque balise a une signification précise qu’il faut bien respecter (on parle de la sémantique des balises).

1.4 Indentation

En typographie : une indentation est un retrait de la première ligne d’un paragraphe. C’est la norme en typographie française (mais pas anglo-saxonne).
En informatique : l’indentation est le fait d’ajouter des espaces en début de ligne pour permettre une meilleure lecture et compréhension du code.

Un code HTML mal indenté devient illisible rapidement donc empêche tout travail en équipe :-(

Voila un exemple de code HTML non indenté :

<!DOCTYPE html> <html> <head> <title> Première page HTML</title> <meta charset="utf-8"> </head> <body> <h1>Je viens d'écrire un titre en HTML !</h1> <p> Et voilà un premier paragraphe ;)</p> </body> </html>

@3 En s’inpirant de la logique d’indentation de Python et en l’applicant à la logique d’ouverture et de fermeture de balise, modifier le code HTML ci-dessus pour qu’il soit correctement indenté, puis le tester dans le simulateur de page web jsbin disponible via ce lien.

Solution :
<!DOCTYPE html> <html> <head> <title> Première page HTML</title> <meta charset="utf-8"> </head> <body> <h1>Je viens d'écrire un titre en HTML !</h1> <p> Et voilà un premier paragraphe ;)</p> </body> </html>

1.5 Attributs de balise

Il est possible d’ajouter des “paramètres” à une balise ouvrante, on parle d’attribut. Une balise peut contenir plusieurs attributs :

<ma_balise attribut_1= "valeur_1" attribut_2="valeur_2">

Un attribut doit toujours avoir :

Il existe beaucoup d’attributs différents. Voir le site référence developer.mozilla.org

@4 Tester le code HTML suivant :

<h1>Ceci est un titre</h1> <h2> <font color="pink">Ceci est un sous titre</font> </h2> <p> <font color="brown"> Ceci est un <strong> paragraphe </strong>.Avez-vous bien compris ?</font> </p>

Les attributs peuvent recevoir différentes valeurs. Ici, l’attribut s’applique à l’élément (la balise) font et cet attribut prend deux valeurs différentes pink et marron dans l’exercice.

En réalité ces attributs “cosmetiques” ne sont pas conseillés en HTML. Ce sont des informations que l’on va plutôt indiquer dans des feuilles de style CSS.

Les attributs les plus fréquents en HTML seront class ou encore id que l’on appelle attributs sélecteurs car ils permettent de sélectionner un élement (balise) précis ou un groupe d’éléments à personnaliser ensuite avec la feuilles de style CSS.

@5 A l’aide du site mozilla, rédiger une présentation des attributs class et id :

Réponses :
  • class : permet de définir la ou les classes auxquelles appartient un élément afin de le mettre en forme (avec CSS) ou de le modifier avec un script (JavaScript).
  • id : permet d’identifier un élément d’un document de façon unique. Il est généralement utilisé pour manipuler l’élément avec des scripts ou pour le mettre en forme avec CSS.

1.6 Anatomie d’une page Web

Nous venons de découvrir (re-découvrir) quelques éléments HTML de base. Regardons comment les organiser au sein d’un fichier pour créer une page HTML complète.

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Ma page de test</title> </head> <body> <img src="images/firefox-icon.png" alt="Mon image de test"> </body> </html>

Cet exemple contient :

<!doctype html> <html lang="fr"> <head> <meta charset="utf-8"> <title>Memento HTML</title> </head> <body> <h1>Hello World! Ceci est un titre</h1> <p>Ceci est un <strong>paragraphe</strong>. Avez-vous bien compris ?</p> </body> </html>

1.7 Les liens

Les liens hypertextes sont l’élément fondateur qui permet que le web soit une toile sur laquelle on peut naviguer de page en page.

Pour créer un lien, il suffit d’utiliser l’élément <a> (signifie anchor , ancre en anglais ) et de renseigner son attribut obligatoire href (hypertext reference en anglais) qui précise l’adresse de destination :

<a href="https://www.mozilla.org/fr/about/manifesto/">Manifeste Mozilla</a>

Attention à ne pas oublier la partie avec https:// ou http:// qui représente le protocole utilisé, au début de l’adresse. Une fois que vous avez créé un lien, testez votre page et cliquez dessus pour vous assurer qu’il fonctionne correctement.

@6 Dans la page web, ajouter trois liens vers vos sites web préférés .

Il est également possible de créer une ancre dans une page, c’est-à-dire de marquer un endroit précis d’une page pour s’y rendre par un lien hypertexte. Les ancres se définissent grâce à l’attribut name ou id.

@7 Copier-coller le code HTML suivant et insérer en bas de page un lien vers une ancre située eu début de page.

<!-- Mettre l'ancre ici --> 1 </br> 2 </br> 3 </br> 4 </br> 5 </br> 6 </br> 7 </br> 8 </br> 9 </br> 10 </br> 11 </br> 12 </br> 13 </br> 14 </br> 15 </br> 16 </br> 17 </br> 18 </br> 19 </br> 20 </br> 21 </br> 22 </br> 23 </br> 24 </br> 25 </br> 26 </br> 27 </br> 28 </br> 29 </br> 30 </br> 31 </br> 32 </br> 33 </br> 34 </br> 35 </br> 36 </br> 37 </br> 38 </br> 39 </br> 40 </br> 41 </br> 42 </br> 43 </br> 44 </br> 45 </br> 46 </br> 47 </br> 48 </br> 49 </br> 50 </br> 51 </br> 52 </br> 53 </br> 54 </br> 55 </br> 56 </br> 57 </br> 58 </br> 59 </br> 60 </br> 61 </br> 62 </br> 63 </br> 64 </br> 65 </br> 66 </br> 67 </br> 68 </br> 69 </br> 70 </br> 71 </br> 72 </br> 73 </br> 74 </br> 75 </br> 76 </br> 77 </br> 78 </br> 79 </br> 80 </br> 81 </br> 82 </br> 83 </br> 84 </br> 85 </br> 86 </br> 87 </br> 88 </br> 89 </br> 90 </br> 91 </br> 92 </br> 93 </br> 94 </br> 95 </br> 96 </br> 97 </br> 98 </br> 99 </br> 100 </br> 101 </br> 102 </br> 103 </br> 104 </br> 105 </br> 106 </br> 107 </br> 108 </br> 109 </br> 110 </br> 111 </br> 112 </br> 113 </br> 114 </br> 115 </br> 116 </br> 117 </br> 118 </br> 119 </br> 120 </br> 121 </br> 122 </br> 123 </br> 124 </br> 125 </br> 126 </br> 127 </br> 128 </br> 129 </br> 130 </br> 131 </br> 132 </br> 133 </br> 134 </br> 135 </br> 136 </br> 137 </br> 138 </br> 139 </br> 140 </br> 141 </br> 142 </br> 143 </br> 144 </br> 145 </br> 146 </br> 147 </br> 148 </br> 149 </br> 150 </br> 151 </br> 152 </br> 153 </br> 154 </br> 155 </br> 156 </br> 157 </br> 158 </br> 159 </br> 160 </br> 161 </br> 162 </br> 163 </br> 164 </br> 165 </br> 166 </br> 167 </br> 168 </br> 169 </br> 170 </br> 171 </br> 172 </br> 173 </br> 174 </br> 175 </br> 176 </br> 177 </br> 178 </br> 179 </br> 180 </br> 181 </br> 182 </br> 183 </br> 184 </br> 185 </br> 186 </br> 187 </br> 188 </br> 189 </br> 190 </br> 191 </br> 192 </br> 193 </br> 194 </br> 195 </br> 196 </br> 197 </br> 198 </br> 199 </br> 200 </br> 201 </br> 202 </br> 203 </br> 204 </br> 205 </br> 206 </br> 207 </br> 208 </br> 209 </br> 210 </br> 211 </br> 212 </br> 213 </br> 214 </br> 215 </br> 216 </br> 217 </br> 218 </br> 219 </br> 220 </br> 221 </br> 222 </br> 223 </br> 224 </br> 225 </br> 226 </br> 227 </br> 228 </br> 229 </br> 230 </br> 231 </br> 232 </br> 233 </br> 234 </br> 235 </br> 236 </br> 237 </br> 238 </br> 239 </br> 240 </br> 241 </br> 242 </br> 243 </br> 244 </br> 245 </br> 246 </br> 247 </br> 248 </br> 249 </br> 250 </br> 251 </br> 252 </br> <!-- Mettre le lien vers l'ancre ici -->

1.8 Les images

La balise <img> permet d’intégrer une image dans la page, à l’endroit où l’élément apparaît. Deux attributs sont importants à compléter :

<img src="images/mon_image.png" alt="Mon image de test">

D’autres attributs sont utilisables avec <img>:

<img src="https://www.w3.org/html/logo/badge/html5-badge-h-solo.png" width="63" height="64" alt="HTML5 Powered" title="HTML5 Powered">

@8 Insérer cet exemple d’image dans la page puis expliquer à quoi servent les attributs, title, width et height.

Réponses :
  • title sert à afficher un message lorsque le curseur est sur l’image
  • width sert à régler la largeur
  • heightsert à régler la hauteur

@9 Faire en sorte que l’image pointe vers le lien hypertexte href="http://www.w3.org/html/".

Indice :

Il n’est pas possible de mettre une balise <a> dans une balise <img> car la balise <img> n’a ni balise fermante ni contenu. Donc il faut mettre une balise … dans …

Bonus A l’aide de ce tutoriel, insérer une vidéo dans la page Web.

Le site référence Mozilla pour aller plus loin dans la découverte de HTML.

1.9 Créer une page

@10 Créer une page web contenant un quiz de 3 questions à choix multiples en utilisant uniquement les balises découvertes ou redécouvertes ci-dessus.

Sites ressources pour la mise en page CSS

2 - Mettre en forme une page web avec CSS

2.1 Modifications de style dans chaque balise HTML

Comme nous l’avons vu, il y a plusieurs façons de développer une page Web.

JsBin est une première étape. Il faut le considérer plus comme un simulateur de page Web que comme un éditeur.

Le moyen le plus simple de rédiger une page web est de créer un fichier index.html avec un éditeur de texte comme bloc-notes, notepad++, Geany, visualstudio

Enfin, une approche intermédiaire consiste à utiliser un éditeur ou plutôt environnement d’édition en ligne comme repl.it (nécessite une création de comptes) ou trinket.io (sans création de comptes).

@11 Créer un dossier page_web sur l’ordinateur. A l’aide d’un éditeur de texte, y créer un fichier index.html contenant le code HTML ci-dessous. Cliquer ensuite deux fois sur ce fichier pour qu’il s’ouvre avec FireFox.

<!doctype html> <html> <head> <meta charset="utf-8"> <title>Memento HTML</title> </head> <body> <h1 style="text-align: center">Memento HTML</h1> <h2 style="color:grey; font-style: italic;">Éléments de base</h2> <p> Les éléments de base constituent la colonne vertébrale de tout document HTML. Ils se trouvent sur toutes les pages web après la déclaration du doctype qui définit la version de HTML utilisée par la page. Les éléments décrivant le contenu d'une page web se trouvent entre la balise ouvrante <code style="background-color: #f0f0f0">&lt;html&gt;</code> et la balise fermante <code style="background-color: #f0f0f0">&lt;/html&gt;</code>. L'élément <code style="background-color: #f0f0f0">&lt;html&gt;</code> est parfois appelé l'élément « racine ». </p> <ul> <li><code style="background-color: #f0f0f0">&lt;html&gt;</code> : représente la racine d'un document HTML. Tout autre élément du document doit être un descendant de cet élément.</li> <li><code style="background-color: #f0f0f0">&lt;head&gt;</code> : fournit des informations générales (métadonnées) sur le document, incluant son titre et des liens ou des définitions vers des scripts et feuilles de style.</li> <li> ... </li> </ul> </body> </html>

On observe dans le code ci-dessus, l’utilisation des attributs dans les balises ouvrantes pour modifier la couleur du texte style="color:grey", l’alignement du texte style="text-align: center" ou la couleur de l’arrière-plan d’un texte style="background-color: #f0f0f0".

@12 Modifier les valeurs des attributs et visualiser ces modifications dans FireFox.

2.2 Bloc de style en début de page HTML

Dans une page Web, il est recommandé que tous les titres <h1> soient mis en forme de manière identique, de même pour <h2> ou <code>. Nous allons donc utiliser une méthode moins répétitive pour associer ces balises avec leur attribut style.

@13 Copier-coller le bloc ci-dessous dans le code HTML, entre les balises <head> et </head> :

<style>
  h2{
    color:grey;
    font-style: italic;
  }
    
  code{
    background-color: #f0f0f0;
  }
</style>

@14 Expliquer à l’oral à votre enseignant préféré, l’intérêt de ce bloc de “style” et en quoi il permet de simplifier le code HTML compris entre les balises <body> et </body>, puis réaliser ces simplifications dans le code HTML.

@15 Ajouter aux éléments de style, le code nécessaire pour que tous les titres <h1> soient alignés au centre de la page web et en blanc sur fond noir.

Nous venons de découvrir une manière “non répétitive” de paramétrer le style d’affichage de différentes balises HTML. Cependant, un inconvénient persiste.

Un site Web compte plusieurs dizaines de pages. Il est donc nécessaire de copier-coller le bloc <style> sur chacune et de refaire ce copier-coller à chaque fois que l’on décide de modifier le style de tel ou tel <h1> ou <li>… etc.

Comment améliorer cela ?

2.3 Feuilles de style CSS

Les CSS (Cascading Style Sheets en anglais, ou « feuilles de style en cascade ») sont le code utilisé pour mettre en forme une page web.

De la même façon que HTML, CSS n’est pas un langage de programmation, mais un langage de description. C’est un langage de feuille de style, c’est-à-dire qu’il permet d’appliquer des styles sur différents éléments sélectionnés dans un document HTML. Par exemple, on peut sélectionner tous les éléments d’une page HTML qui sont paragraphes p et afficher leurs textes en rouge avec ce code CSS :

p { color: red; }

@16 Copier les trois lignes de code CSS ci-dessus dans un nouveau fichier nommé style.css dans le même dossier que la page index.html.

Pour que cela fonctionne, il faut appliquer le CSS au document HTML, sinon la mise en forme décrite dans le fichier CSS n’affectera pas l’affichage de la page HTML dans le navigateur.

@17 Dans le fichier index.html, copier la ligne ci-dessous au sein de l’élément head (c’est-à-dire entre les balises <head> et </head>) à la place de l’élément style (c’est-à-dire à la place des balises <style> et </style> ainsi que ce qu’elles contiennent, puis sauvegarder le fichier et visualiser les changements dans l’explorateur Web.

<link href="style.css" rel="stylesheet" type="text/css">

2.4 Anatomie d’une règle CSS

Comme pour le langage HTML, il existe des règles et une vocabulaire à connaître en CSS :

Dans l’exemple ci-dessous :

    p{
        color:red;
    }

Cette structure s’appelle un ensemble de règles (ou seulement « une règle »). Les différentes parties se nomment :

Syntaxe à respecter :

Ainsi, si on veut modifier plusieurs propriétés d’un coup, on peut utiliser plusieurs déclarations dans une seule règle en les séparant par des points-virgules :

p {
  color: red;
  width: 500px;
  border: 1px solid black;
}

2.5 Sélecteurs d’élément (dit aussi selecteurs de balise)

Dans l’exemple ci-dessus, le sélecteur applique une mise en forme à tous les éléments p (toutes les balises p). C’est ce qu’on appelle un sélecteur d’élément (ou de balise). Il permet de sélectionner tous les éléments HTML d’un type donné.

Remarque : En l’absence de règles de style CSS, les balises comme <h1>, <p>, ou <strong> appliquent un style par défaut. Le fait d’utiliser des attributs <style> associées aux balises HTML, permet “d’écraser” le style par défaut.

De même qu’il existe des styles par défaut, il existe des priorités pour appliquer les styles qui sont détaillés dans un fichier style.css ou directement dans le fichier index.html.

@18 Dans le code HTML ajouter les éléments suivants et visualiser le résultat obtenu à l’écran.

<p>Ce texte est en rouge, comme souhaité dans le fichier CSS</p>
<p style="color: blue;">Ce texte est en bleu, car l'attribut <code>color</code> dans la balise est prioritaire sur le code du fichier CSS</p>

2.6 Selecteur de classe

Un sélecteur peut aussi modifier le style de tous les éléments d’une page qui sont d’une classe donnée (dans une page web, plusieurs éléments peuvent partager une même classe).

@19 Dans le code HTML, ajouter le code suivant.

<h1>Voici un titre</h1> <p class="classe_intro">et ceci un bout d’introduction</p> <p>Voici un paragraphe quelconque avec un <strong>mot important</strong> ainsi qu’un <a href="http://ndlr.fr">lien</a>.</p> <h2 >Un titre "h2"</h2> <p class="classe_intro">avec son paragraphe d’intro</p>

@20 Ajouter le code CSS suivant. Visualiser le résultat et expliquer, à l’oral, l’intérêt de l’attribut class.

.classe_intro{ text-align: right; color: #808080; }

2.7 Selecteur d’identifiant (ID)

Un sélecteur peut aussi modifier le style de l’élément d’une page qui possède l’ID fourni (dans une page HTML donnée, on ne peut avoir qu’un seul élément pour un ID donné).

@21 Dans le code HTML, modifier le code précédant ainsi.

<h1>Titre</h1> <p class="classe_intro" id="intro_1">Un premier paragraphe intro</p> <p>Voici un paragraphe quelconque avec un <a href="http://ndlr.fr">lien</a>. </p> <h2 >Un titre "h2"</h2> <p class="classe_intro">Un autre paragraphe d’intro</p>

@22 Ajouter le code CSS suivant. Visualiser le résultat et expliquer, l’intérêt de id par rapport à « class ».

#intro_1{ font-weight: bold; text-align: center; }

A retenir :

EXPERT 1 Consulter la page d’initiation aux feuilles de style CSS du site mozilla dont je me suis d’ailleurs inspiré pour rédiger cette partie de cours.

3 - Le langage JavaScript

Après avoir découvert HTML et son grand associé CSS, voyons le troisième compère devenu incontournable dans le développement web, le JavaScript. Le but n’est pas d’apprendre un nouveau langage de programmation, mais d’étudier quelques exemples d’interactions entre JavaScript et une page web.

On notera au passage que JavaScript est un langage de programmation de la même manière que Python ou C alors que HTML et CSS sont des langages de description.

@23 Créer sur l’ordinateur, dans un dossier dédié, 3 fichiers : index.html, style.css et script.js et copier-coller leur code respectif ci-dessous, à l’aide d’un éditeur de texte comme Geany ou VS code disponible sur cet ordinateur.

<!doctype html> <html lang="fr"> <head> <meta charset="utf-8"> <title>Ma page</title> <link rel="stylesheet" href="style.css"> </head> <body> <h1>Découvrons le JavaScript</h1> <p>Voici un début de page sobre !!!</p> <img src="http://wikiclic.com/wp-content/uploads/2015/06/javascript-icon.png"> </body> </html>
h1{ text-align: center; }
alert("Le JavaScript fonctionne !");

Pour l’instant notre code JavaScript n’est pas exécuté par notre navigateur Web. Comme pour le code CSS, il nous faut dire au code HTML où se trouve le code JavaScript.

@24 Ajouter au fichier index.html la ligne suivante juste avant la balise fermante </body>. Cliquer ensuite deux fois sur le fichier index.html pour qu’il s’ouvre avec FireFox.

<script src="script.js"></script>

Cette fois, le code JavaScript s’exécute et ouvre une boite de dialogue appelé ausi fenêtre “pop-up”. C’est dû à l’instruction alert du code JavaScript.

@25 Ajouter, à présent, les deux lignes ci-dessous dans le fichier script.js. Puis tester son fonctionnement et l’expliquer à l’oral.

let monParagraphe = document.querySelector('p'); monParagraphe.textContent = 'Et voilà une page dynamique bien plus sophistiquée !!!';

La raison pour laquelle nous avons placé l’élément <script> en bas du fichier index.html est que le HTML est chargé par le navigateur dans l’ordre dans lequel il apparaît dans le fichier.

Si le JavaScript est chargé en premier et qu’il est supposé affecter le HTML en dessous, il pourrait ne pas fonctionner, car le JavaScript serait chargé avant le HTML sur lequel il est supposé travailler. Par conséquent, placer l’élément <script> près du bas de la page HTML est souvent la meilleure stratégie.

Que s’est-il passé ?

Le texte du paragraphe <p> a été changé en “Et voilà une page dynamique bien plus sophistiquée !!!” en utilisant JavaScript.

Pour cela, on a utilisé une fonction appelée querySelector() pour obtenir une référence sur le paragraphe et la stocker dans une variable appelée monParagraphe. C’est assez proche de ce qu’on a fait avec les sélecteurs CSS. En effet, lorsqu’on souhaite manipuler un élément, il faut d’abord le sélectionner.

Ensuite, nous fixons à "Et voilà une page dynamique bien plus sophistiquée !!!" la valeur de la propriété textContent de la variable monParagraphe (elle représente le contenu du paragraphe).

Les deux fonctions querySelector() et textContent que nous avons utilisées font partie de l’Interface de Programmation (API) du Document Object Model (DOM), qui nous permet de manipuler les documents.

Dans ces exemples, les instructions JavaScript sont exécutées dès l’ouverture de la page web, mais il est possible de ne les exécuter qu’à l’apparition d’un événement comme un clic de souris, par exemple.

@26 Dans le fichier index.html, remplacer l’élément <img ...> par le nouvel élément ci-dessous. Puis tester son fonctionnement et expliquer pourquoi il ne se passe rien quand on appuie sur le button.

Réponse :

Il ne se passe rien quand on appuie sur le button, car la fonction maFonction() n’est déclarée nulle part.

<button onclick="maFonction()">Cliquer ici</button>

@27 Remplacer le contenu du fichier script.js par le code suivant. Puis, expliquer, à l’oral, le résultat obtenu à l’écran.

Réponse :

A l’ouverture de la page web l’instruction alert n’est plus exécutée, car elle se trouve, désormais, dans une fonction, c’est-à-dire, entre l’accolade ouvrante { et l’accolade fermante } qui délimitent l’ensemble des instructions de la fonction.

function maFonction() { alert("Le JavaScript fonctionne !") }

Les accolades en JavaScript jouent le rôle de l’indentation en Python.

L’indentation n’a, ici, plus qu’une utilité graphique. Mais c’est une habitude rigoureuse à conserver en JavaScript même si cela ne change pas le fonctionnement du code.

A présent, l’instruction alert est exécutée uniquement dans le cas où l’utilisateur clique sur le bouton. C’est l’événement onclick du bouton qui lance l’exécution de la fonction JavaScript maFonction().

Testons d’autres possibilités d’interactions entre l’utilisateur et la page web. Modifions le style d’une balise ou mieux encore, la class d’une balise en passant par le code CSS.

@28 Remplacer le contenu des fichiers index.html et script.js par les codes respectifs ci-dessous. Puis tester le fonctionnement, et l’expliquer à l’oral.

<!doctype html> <html lang="fr"> <head> <meta charset="utf-8"> <title>Ma page</title> <link rel="stylesheet" href="style.css"> </head> <body> <p class="petit">Un petit texte</p> <p id="monParagrapheFavori">Un texte plus ou moins ...</p> <p class="grand">Un grand texte</p> <button onclick="maFonction()">Colorier en rouge</button> <script src="script.js"></script> </body> </html>
function maFonction() { document.querySelector("#monParagrapheFavori").style.color="red"; }

Dans le code HTML, nous venons d’ajouté à la balise <p>, un attribut id avec la valeur monParagrapheFavori.

Ainsi, le code JavaScript peut modifier le style de la balise ayant pour id monParagrapheFavori et seulement cette balise.

Pour rappel : id et class sont deux attributs de balises semblables, cependant :

Voyons, à présent, comment modifier, avec JavaScript, les classes CSS afin de modifier l’apparence des pages Web.

@29 Ajouter aux fichiers style.css et script.js les lignes complémentaires respectives suivantes. Puis recharger la page web dans le navigateur et expliquer, à l’oral, le résultat à l’écran.

.petit { font-size:10px; } .grand { font-size:30px; }
function foncGrand() { document.querySelector("#monParagrapheFavori").classList.remove("petit"); document.querySelector("#monParagrapheFavori").classList.add("grand"); } function foncPetit() { document.querySelector("#monParagrapheFavori").classList.remove("grand"); document.querySelector("#monParagrapheFavori").classList.add("petit"); }

@30 Ajouter au code HMTL deux boutons appelant les deux fonctions JavaScript ci-dessus. Puis tester leur fonctionnement.

Correction :

Il est également possible de modifier directement le contenu d’une balise HTML.

@31 Ajouter au fichier script.js la fonction ci-dessous. Puis créer un bouton dans index.html et l’associer à la fonction. Tester le résultat.

function modifMessage() { document.querySelector("#monParagrapheFavori").innerHTML = "Bravo ! Quel magnifique click sur le bouton !" }

On remarque que [selecteur].innerHTML fonctionne de la même manière que [selecteur].textContent vu précédemment.

Il existe d’autres événements que onclick, par exemple, il est possible de détecter le “survol” par le curseur de la souris d’un élément HTML avec l’événement onmouseover.

@32 Ajouter au fichier index.html, la ligne suivante. Puis tester le fonctionnement, et l’expliquer à l’oral.

<span onmouseover="foncGrand()" onmouseout="foncPetit()" id="maDiv">Survolez-moi !!!</span>

@33 Avec l’aide de tutoriels sur Internet, créer une page HTML + CSS intégrant une « boite de confirmation » et un « questionnaire à choix unique » fonctionnant grâce à JavaScript.

Ressources très utiles

@34 A l’aide des langages HTML, CSS et JavaScript, réaliser un site decroivant votre MINI-PROJET en respectant les contraintes suivantes :

Sites ressources pour la réalisation du quizz en JavaScript