Mise en contexte
Rappel de l’Axe 1, tel que défini dans la conclusion du chapitre 1 : le concepteur designer n’a pas besoin de savoir écrire du JavaScript à la main — il doit savoir faire générer un script par une IA, le tester, savoir où l’insérer dans un site réel, et surtout, ne jamais considérer le travail terminé sans être passé par un réflexe de sécurité et une conscience du poids ajouté à la page.
Ce chapitre vous propose 5 pistes différentes, chacune illustrant un effet concret qu’on peut ajouter à un site avec un peu de JavaScript généré par IA. Vous allez traiter les 5 — l’objectif est de répéter la méthode sur des cas variés, pas de n’en tester qu’un seul.
Co-construction, pas vibe coding
Il y a une différence essentielle entre demander directement du code à une IA (ce qu’on appelle parfois le « vibe coding » — on colle un résultat sans vraiment comprendre comment il fonctionne) et co-construire ce code avec elle.
Vous n’êtes pas développeur, et vous n’avez aucune raison de connaître le nom technique de la fonctionnalité qui permettra de réaliser l’effet souhaité. Ce n’est pas votre rôle. Mais cela ne vous exonère pas de garder la main sur le processus de co-construction ! Votre rôle est de décrire le besoin, en langage courant — exactement comme vous le feriez à l’oral avec un développeur. C’est ensuite à l’IA de :
- reformuler et expliquer, elle aussi en langage courant, comment elle compte s’y prendre — avant de produire la moindre ligne de code
- vous poser des questions si votre demande manque de précision
C’est cet échange — votre besoin, reformulé et expliqué par l’IA, éventuellement précisé par un aller-retour de questions — qui constitue le véritable prompt final, pas la première phrase que vous avez tapée.
Le squelette de prompt à utiliser pour chacune des 5 pistes
C’est quoi le CSP, et pourquoi ça bloque parfois tout ? Le CSP (Content Security Policy) est une règle de sécurité que certains sites activent pour se protéger contre l’injection de code malveillant — un peu comme un videur à l’entrée d’une salle, qui refuse tout ce qui n’est pas sur la liste autorisée. Concrètement, ça veut dire que sur certains sites (Wikipédia, par exemple), un script collé manuellement dans la console peut être purement et simplement ignoré par le navigateur, sans que rien ne se passe et parfois sans même de message d’erreur explicite. Ce n’est donc pas forcément votre script qui est en cause : c’est le site testé qui refuse de l’exécuter. C’est pour cette raison qu’on le précise dès le prompt : ça permet à l’IA d’anticiper cette limite, et de vous expliquer comment la contourner ou la tester malgré tout.
Les quelques mots-clés de fin (sécurisé, élégant, performant, pertinent) sont volontairement simples à comprendre, sans connaissance technique — mais ils orientent fortement la qualité de ce que l’IA va produire, sans que vous ayez besoin de juger vous-même la qualité du code.
La méthode commune, pour chacune des 5 pistes
- 1. Décrire le besoin à une IA, avec le squelette de prompt ci-dessus, et échanger avec elle jusqu’à obtenir une explication claire de ce qu’elle compte faire, avant tout code.
- 2. Tester le résultat via les DevTools — copiez le code généré directement dans l’onglet Console de votre navigateur (revoir le chapitre dédié aux DevTools si besoin), sur une vraie page web, pour observer si l’effet fonctionne réellement avant même de l’insérer où que ce soit.
Avant même de coller quoi que ce soit : la plupart des navigateurs bloquent par défaut le collage de code dans la console, par sécurité. Un message vous invite à taper une phrase de confirmation (souvent « allow pasting ») avant de pouvoir coller quoi que ce soit. Si rien ne se passe après un collage, vérifiez d’abord ce point, avant de chercher une autre explication.
Nous vous invitons à tester votre injection console en utilisant un article Wikipédia — ce site est à la fois représentatif d’un vrai contenu structuré (texte, titres, images) et compatible avec la plupart des scripts, ce qui en fait un bon terrain d’essai par défaut pour chacune des 5 pistes.
Juste après avoir collé un script : regardez toujours ce qui s’affiche immédiatement en dessous dans la console — s’il y a un message d’erreur, il apparaît à cet endroit précis. Avant de retourner voir l’IA, prenez le temps de le lire vous-même : le message est parfois suffisamment clair pour comprendre seul ce qui ne va pas (une faute de frappe dans le nom d’un élément, par exemple), ou au moins pour repérer la ligne concernée. Ce n’est qu’ensuite, si le message reste incompréhensible, qu’il faut le transmettre à l’IA.
Note importante sur le test en console : si rien ne se passe lors du test, ce n’est pas forcément une erreur dans le script. Certains sites (Wikipédia, par exemple) utilisent un cadre de sécurité strict appelé CSP (Content Security Policy), qui bloque volontairement l’exécution de scripts collés manuellement dans la console — pour des raisons de sécurité, justement. Si un test échoue sur un site précis, essayez-le sur un autre site avant de conclure que le script est mauvais.
Le protocole à suivre si vous n’obtenez pas de résultat, pour chacune des 5 pistes :
- Vérifiez d’abord si l’onglet Console affiche un message d’erreur — c’est souvent la première information utile
- Précisez à l’IA sur quel site précis vous avez fait le test
- Expliquez-lui le problème rencontré, avec le message d’erreur si vous en avez un
- Continuez la conversation avec elle jusqu’à obtenir un résultat qui fonctionne réellement — ne restez jamais bloqué sur un premier essai infructueux sans revenir vers l’IA pour ajuster
Un autre cas de figure, différent d’une erreur technique : le code fonctionne, mais il ne fait pas ce que vous avez demandé. Dans ce cas, un message générique à réutiliser à chaque fois :
Soyez aussi précis que possible dans la description de l’écart — plus votre explication est claire, plus l’IA pourra corriger exactement le bon point, sans repartir de zéro.
- 3. Analyser le résultat — est-ce que ça fonctionne comme attendu ? Est-ce que l’IA a pensé à un cas limite que vous n’aviez pas précisé ? Et surtout : posez systématiquement les deux questions de clôture de l’Axe 1 — ce script pose-t-il un problème de sécurité (peut-il être détourné, expose-t-il une donnée sensible), et quel est son poids réel sur la page ?
Une fois ces 3 étapes passées, et si le résultat vous intéresse : ce code pourrait être transformé en véritable plugin WordPress, installable en un clic sur n’importe quel site — un sujet qui sera traité dans un chapitre ultérieur. Pour l’instant, l’objectif de cet exercice s’arrête à la génération, au test, et à l’analyse.
Les 5 pistes
Piste 1 — Infobulle de partage sur sélection de texte
Le parcours, en langage naturel : le visiteur lit un article, et sélectionne un passage de texte avec sa souris (comme sur Medium.com). Une petite bulle apparaît aussitôt, juste au-dessus de la sélection, avec un bouton pour copier ce passage. Le visiteur clique dessus : le texte, accompagné du lien de la page, est copié dans son presse-papier. Une pop-up de confirmation s’affiche alors immédiatement, sans qu’il ait besoin de cliquer sur quoi que ce soit pour la faire apparaître, avec le message « Voici le contenu qui a été copié » et le texte copié affiché dedans. Elle reste visible tant que le visiteur ne clique pas sur sa croix de fermeture — il n’y a pas de disparition automatique après quelques secondes.
Points à vérifier lors de l’analyse : le script s’active-t-il bien uniquement sur ordinateur ? La bulle se positionne-t-elle correctement même si on sélectionne du texte tout en bas ou tout en haut de l’écran ? La pop-up de confirmation s’affiche-t-elle bien automatiquement après chaque copie, sans qu’il faille cliquer sur une notification pour l’ouvrir ? Se ferme-t-elle bien uniquement au clic sur sa croix, sans disparaître toute seule ? Si le test échoue sur un site précis, avez-vous pensé à vérifier s’il s’agit d’un vrai bug ou d’un blocage CSP du site lui-même ?
Piste 2 — Temps de lecture restant, en direct
Le parcours, en langage naturel : le visiteur arrive sur un article. Dès le chargement, un petit encart apparaît, fixé à l’écran en permanence (il ne disparaît pas quand on scrolle, contrairement à un texte simplement placé en haut du contenu), affichant le temps de lecture total restant. Au fur et à mesure que le visiteur fait défiler la page, ce temps diminue progressivement, recalculé selon la portion déjà lue — ce n’est pas un chronomètre qui décompte tout seul avec le temps qui passe, indépendamment de la lecture. En arrivant tout en bas de l’article, l’encart affiche un message clair indiquant que la lecture est terminée.
Points à vérifier lors de l’analyse : l’encart reste-t-il bien visible à l’écran en permanence pendant le défilement, plutôt que de disparaître après avoir scrollé un peu ? Le temps affiché diminue-t-il en fonction de la position de lecture, et non d’un simple décompte du temps écoulé (testez en ne scrollant pas du tout pendant 30 secondes : le temps ne doit pas bouger) ? Que se passe-t-il précisément en arrivant tout en bas ? Le script recalcule-t-il correctement si la fenêtre est redimensionnée ? A-t-il su détecter tout seul la bonne zone de texte sur le site testé, sans que vous ayez eu à préciser une balise particulière ?
Piste 3 — Bouton « écouter cet article »
Le parcours, en langage naturel : le visiteur arrive sur un article, et voit un bouton « Écouter cet article » — visible uniquement si son navigateur sait le faire, sinon rien ne s’affiche. Il clique dessus : la lecture démarre aussitôt, en français, avec une voix compréhensible, en lisant uniquement le texte de l’article (pas le menu, ni le pied de page). Le bouton se transforme pour proposer une mise en pause ; le visiteur peut interrompre la lecture, puis la reprendre exactement où elle s’était arrêtée. Un moyen clair permet aussi d’arrêter complètement la lecture. S’il clique une seconde fois sur le bouton principal pendant que ça lit déjà, le comportement est prévisible (pas de superposition de deux lectures, ni de plantage).
Points à vérifier lors de l’analyse : le bouton disparaît-il bien proprement si la fonctionnalité n’est pas disponible ? La voix utilisée est-elle bien en français et compréhensible ? A-t-il su détecter la bonne zone de texte sans que vous ayez précisé de balise ? La mise en pause et la reprise fonctionnent-elles correctement ? Que se passe-t-il si on clique plusieurs fois rapidement sur le bouton pendant la lecture ?
Piste 4 — Générateur de QR code local
Le parcours, en langage naturel : le visiteur clique sur un bouton « Afficher le QR code ». Un QR code apparaît aussitôt, assez grand pour être scanné facilement avec un téléphone, pointant vers l’adresse de la page actuelle — tout est généré directement dans le navigateur, sans passer par un service externe ni charger la moindre bibliothèque depuis un CDN. Le visiteur peut fermer l’affichage simplement, et s’il reclique sur le bouton, aucun second QR code ne vient s’empiler par-dessus le premier.
Point de vigilance sécurité propre à cette piste : le besoin précise volontairement « sans envoyer l’adresse à un service extérieur » et « sans charger aucune bibliothèque externe » — deux contraintes distinctes, à ne pas confondre. Un script pourrait générer le QR code entièrement dans le navigateur (donc sans rien envoyer) tout en allant chercher une bibliothèque toute faite sur un CDN externe — ce qui fonctionnerait en théorie, mais échouerait justement sur les sites au CSP strict qu’on a déjà rencontrés, puisqu’il faudrait charger du code depuis l’extérieur. C’est pour ça que le prompt exige un script totalement autonome, sans aucune dépendance. Lors de votre analyse, vérifiez dans l’explication de l’IA qu’elle confirme bien les deux points : aucun envoi de données, et aucun chargement externe.
Piste 5 — Contenu masqué par « mot magique »
Le parcours, en langage naturel : le visiteur arrive sur une page, et découvre que tout le texte et toutes les images ont été remplacés par du faux contenu — la mise en page reste identique à l’originale à 100%, seuls les textes deviennent du latin et les images des placeholders. Un bouton, fixé en permanence au centre de l’écran, demande un mot magique. S’il se trompe, un message d’erreur clair s’affiche. S’il saisit le bon mot, le vrai contenu apparaît, et reste débloqué sur l’ensemble du site pendant 5 minutes — l’expiration n’est vérifiée qu’au moment où une page se recharge, pas en direct pendant la navigation. Tant que le contenu est verrouillé, aucun lien ni bouton de la page ne fonctionne réellement.
Points à vérifier lors de l’analyse : la mise en page reste-t-elle identique à 100% à l’originale (rien ne bouge, ne se décale, ne casse) ? Chaque type d’élément conserve-t-il bien sa nature (les titres restent des titres, les paragraphes restent des paragraphes) ? Le bouton reste-t-il bien fixé au centre de l’écran pendant le défilement ? Un mauvais mot de passe affiche-t-il bien un message d’erreur ? Les liens de la page sont-ils réellement inactifs tant qu’elle est verrouillée, pas seulement masqués visuellement ?
Une leçon de prompting, découverte en construisant cette piste : une première version du prompt disait « pas un rendu type skeleton loader », pour écarter cette option. Résultat : l’IA a justement généré un skeleton loader (des barres grises à la place du texte). Nommer un exemple, même pour dire qu’on n’en veut pas, peut suffire à le faire apparaître quand même — l’IA retient le mot-clé, pas forcément la négation qui l’accompagne. La bonne pratique : décrire uniquement ce qu’on veut, jamais ce qu’on ne veut pas. C’est pour ça que le prompt final ci-dessus ne mentionne plus « skeleton loader » du tout.
Point de vigilance sécurité propre à cette piste, à tester activement : une fois le script généré et testé, ouvrez la console DevTools et essayez de débloquer le contenu sans jamais saisir le vrai mot de passe, en modifiant directement les informations que le script a stockées dans le navigateur. Si vous y parvenez, c’est la démonstration concrète qu’un mot de passe géré uniquement en JavaScript côté client n’est jamais une vraie protection — seulement un obstacle cosmétique. Demandez d’ailleurs à l’IA, dans votre échange, si cette limite existe pour la solution qu’elle vous propose.
Pour conclure
Le réflexe sécurité de la toute dernière minute
Sur les 5 pistes de ce chapitre, une bonne partie du temps a été passée à faire des allers-retours avec l’IA pour obtenir un résultat qui fonctionne correctement — corriger un skeleton loader qui n’aurait pas dû apparaître, préciser une zone de contenu, régler un comportement de clic répété. C’est normal, et c’est même l’essence de la co-construction.
Mais ce temps passé à chasser le bon fonctionnement fait naturellement perdre de vue la question de la sécurité — aussi bien de votre côté que de celui de l’IA, concentrée elle aussi sur le problème du moment. Ce n’est ni un oubli grave, ni une erreur : c’est juste l’effet naturel d’itérer sur un problème précis.
C’est justement pour ça qu’une dernière passe, entièrement dédiée à la sécurité, doit systématiquement clôturer le travail — une fois que le résultat fonctionne comme attendu, jamais avant. Reprenez le code final, et demandez explicitement à l’IA de l’auditer sous cet angle, sans rien d’autre en tête.
Le code testé en console n’est pas encore un code prêt pour un vrai site
Coller le code brut entre des balises <script>...</script> peut suffire, mais ce n’est pas garanti à chaque fois — deux différences importantes entre la console et une vraie page méritent d’être vérifiées avant de considérer le code prêt :
- Le moment d’exécution. Dans la console, la page est déjà entièrement chargée quand on colle le script — tous les éléments HTML existent. Placé tel quel en haut d’une page, ce même script peut s’exécuter avant que les éléments qu’il cherche à manipuler n’existent encore, et échouer silencieusement. Il faut alors le placer juste avant
</body>, ou l’entourer d’unDOMContentLoaded— une technique déjà croisée dans plusieurs chapitres HTML/CSS du cours. - L’exécution répétée. Un script collé en console ne s’exécute qu’une seule fois, sur commande. Une fois inséré dans une vraie page, il s’exécutera à chaque chargement — généralement le comportement voulu, mais à vérifier au cas par cas.
Le plus simple : redemander à l’IA d’adapter le script pour une intégration durable sur un site, plutôt que pour un simple test en console — et lui poser directement la question de ces deux points.
Note finale
Pour un site WordPress, la solution la plus propre reste, la plupart du temps, de transformer ce script en véritable plugin installable — un sujet qui sera traité dans un chapitre à part, en dehors de cette section.