créer un fichier HTML basique : les étapes essentielles pour débutants

apprenez à créer un fichier html basique grâce à ce guide étape par étape, idéal pour les débutants souhaitant maîtriser les fondamentaux du développement web.

Créer un fichier HTML basique : les indispensables pour les débutants

Entrer dans l’univers du développement web débute souvent par la maîtrise du HTML, langage fondamental qui structure nos pages internet. Apprendre à créer un fichier HTML de base est une étape accessible même sans connaissances techniques approfondies. Ce guide détaille la manière d’organiser son code source pour construire une page web simple et fonctionnelle, idéale pour les novices souhaitant s’initier.

Ouvrir un éditeur de texte et comprendre la structure HTML initiale

Pour débuter, un outil classique suffit. Sur Windows, Notepad ou Notepad++ sont recommandés, tandis que sur macOS, TextEdit ou Text-Edit Plus répondent à ce besoin d’éditeur de texte brut. Le fichier HTML s’écrit donc dans un environnement simple, sans nécessiter d’outils sophistiqués. La première ligne à saisir est la déclaration <!DOCTYPE html>, qui informe le navigateur du type de contenu à interpréter.

Les balises de base ouvrent et ferment le document. L’élément <html> encadre l’ensemble du contenu, tandis que <head> rassemble les métadonnées. Ici, le titre du site, encadré par <title> et </title>, apparaîtra sur l’onglet du navigateur.

Organiser le contenu visible avec le corps du document HTML

La partie visible sur la page est enclenchée entre les balises <body> et </body>. Pour offrir une hiérarchie lisible, les balises de titres <h1> à <h6> ordonnent les idées, un moyen efficace d’améliorer la structure HTML.

Avec la balise <p>, les paragraphes s’imbriquent naturellement dans le document. Il est possible de jouer avec des attributs comme style="color:blue;" pour colorer le texte ou modifier l’arrière-plan, rendant ainsi la page plus attrayante.

Intégrer des images et liens hypertextes pour enrichir la page web basique

L’insertion d’images se réalise via la balise <img src="url_de_limage">. Prêter une attention particulière au respect des droits d’auteur reste essentiel. Ajouter des liens actifs utilise la balise <a href="url_destination">, ce qui dynamise la navigation interne ou externe.

Ces fonctionnalités sont simples mais essentielles pour rendre la page interactive et plaisante, éléments fondamentaux pour qui découvre le web design.

Créer une page HTML avec le bloc-notes en 1 minute [vidéo 1/60]

Pourquoi bien sauvegarder et ouvrir votre fichier dans un navigateur est crucial

Après avoir codé, l’enregistrement du document est une étape clé. Sur Windows, le fichier doit avoir l’extension .html et être sauvegardé en mode « Tous les fichiers ». Sous macOS, la conversion en texte brut est nécessaire avant d’ajouter cette extension.

Le fichier sauvegardé s’ouvre alors simplement dans n’importe quel navigateur Internet par un double-clic ou via un menu d’ouverture spécifique. Cette ouverture permet de tester instantanément l’affichage et la structure de la page web basique élaborée.

Liste essentielle des étapes pour créer un fichier HTML basique

  • 🧰 Ouvrir un éditeur de texte adapté.
  • 📄 Saisir la déclaration <!DOCTYPE html> pour le navigateur.
  • 🏗️ Construire la structure HTML avec les balises <html>, <head> et <body>.
  • 🖋️ Ajouter un titre pertinent avec <title>.
  • 📝 Insérer les titres et paragraphes via <h1> à <h6> et <p>.
  • 🖼️ Intégrer images <img> et liens hypertextes <a>.
  • 💾 Sauvegarder le fichier avec l’extension .html.
  • 🌐 Ouvrir le fichier dans un navigateur pour visualiser le résultat.

Tableau récapitulatif des balises HTML fréquentes et leur fonction

Balise 🏷️ Fonction ✍️ Usage Exemple 🔍
<h1>–<h6> Titres de différents niveaux <h2>Sous-titre</h2>
<p> Paragraphe de texte <p>Paragraphe informatif</p>
<img> Insertion d’une image <img src="photo.jpg">
<a> Lien hypertexte <a href="https://site.com">Lien</a>

Améliorer vos compétences HTML grâce à des ressources et exemples pratiques

Pour progresser, explorer des tutoriels tels que ceux disponibles sur Sciences du Numérique offre un cadre pédagogique solide. Des exemples concrets, y compris la création d’une page web HTML complète, permettent de comprendre l’application des balises dans un contexte réel.

L’intégration de projets simples, tels que ceux présentés pour débutants, s’avère précieuse pour acquérir une maîtrise progressive et fiable des fondamentaux du code web.

📚APPRENDRE HTML & CSS: COURS POUR DEBUTANTS👨‍💻

Liste des ressources complémentaires recommandées pour approfondir

Qu’est-ce qu’un fichier HTML ?

Un fichier HTML est un document contenant du code source en langage HyperText Markup Language, qui structure les éléments d’une page web et sert de base à l’affichage par un navigateur.

Comment ouvrir un fichier HTML après sa création ?

Une fois sauvegardé avec l’extension .html, il suffit généralement de double-cliquer dessus ou de le « ouvrir avec » un navigateur comme Chrome, Firefox ou Edge pour voir la page web.

Faut-il un logiciel spécifique pour coder en HTML ?

Non, un simple éditeur de texte suffit pour créer un fichier HTML basique. Des outils dédiés peuvent faciliter la tâche, mais ne sont pas obligatoires pour débuter.

Quelles balises HTML sont essentielles pour une page simple ?

Les balises principales incluent , , , <body>, <h1> à <h6>, <p>, <img> et <a>. Elles permettent de structurer le contenu et d’ajouter images et liens.</p> <h3><span class="ez-toc-section" id="Comment-personnaliser-lapparence-dun-texte-en-HTML"></span>Comment personnaliser l’apparence d’un texte en HTML ?<span class="ez-toc-section-end"></span></h3> <p>L’attribut style avec des propriétés CSS, comme color ou background-color, permet de modifier la couleur du texte ou de l’arrière-plan directement dans les balises HTML.</p> <div class="saboxplugin-wrap" itemtype="http://schema.org/Person" itemscope itemprop="author"><div class="saboxplugin-tab"><div class="saboxplugin-gravatar"><img alt='Nathan Andre' src="https://sciences-du-numerique.fr/core/cache/flying-press/gravatar-99673cf286c9.png" srcset="https://sciences-du-numerique.fr/core/cache/flying-press/gravatar-08f1af51c58d.png 2x" class='avatar avatar-100 photo avatar-default' height='100' width='100' itemprop="image" loading="lazy" fetchpriority="low" sizes="auto"/></div><div class="saboxplugin-authorname"><a href="https://sciences-du-numerique.fr/writer/nathan-andre" class="vcard author" rel="author"><span class="fn">Nathan Andre</span></a></div><div class="saboxplugin-desc"><div itemprop="description"><p>Nathan explore sans relâche les avancées de l’intelligence artificielle et leurs impacts sociétaux. Il adore vulgariser les concepts complexes, avec un ton engageant et des métaphores qui parlent à tous les curieux du numérique.</p> </div></div><div class="clearfix"></div></div></div></div></div></div></div></div></div><div class="wp-block wp-block-kubio-row position-relative wp-block-kubio-row__container style-oBH0ABWoeL-container style-local-33-container gutters-row-lg-0 gutters-row-v-lg-0 gutters-row-md-0 gutters-row-v-md-0 gutters-row-0 gutters-row-v-0" data-kubio="kubio/row"><div class="background-wrapper"><div class="background-layer background-layer-media-container-lg"></div><div class="background-layer background-layer-media-container-md"></div><div class="background-layer background-layer-media-container"></div></div><div class="position-relative wp-block-kubio-row__inner style-oBH0ABWoeL-inner style-local-33-inner h-row align-items-lg-stretch align-items-md-stretch align-items-stretch justify-content-lg-center justify-content-md-center justify-content-center gutters-col-lg-0 gutters-col-v-lg-0 gutters-col-md-0 gutters-col-v-md-0 gutters-col-0 gutters-col-v-0"><div class="wp-block wp-block-kubio-column position-relative wp-block-kubio-column__container style-wETEbWZUNc-container style-local-34-container d-flex h-col-lg-auto h-col-md-auto h-col-auto" data-kubio="kubio/column"><div class="position-relative wp-block-kubio-column__inner style-wETEbWZUNc-inner style-local-34-inner d-flex h-flex-basis h-px-lg-3 v-inner-lg-3 h-px-md-3 v-inner-md-3 h-px-3 v-inner-3"><div class="background-wrapper"><div class="background-layer background-layer-media-container-lg"></div><div class="background-layer background-layer-media-container-md"></div><div class="background-layer background-layer-media-container"></div></div><div class="position-relative wp-block-kubio-column__align style-wETEbWZUNc-align style-local-34-align h-y-container h-column__content h-column__v-align flex-basis-100 align-self-lg-start align-self-md-start align-self-start"><p class="wp-block wp-block-kubio-text position-relative wp-block-kubio-text__text style-single-1pwRcGAnh-text style-local-35-text" data-kubio="kubio/text">CATEGORIES:</p><div class="wp-block wp-block-kubio-post-categories position-relative wp-block-kubio-post-categories__container style-up5pQ_Cww-container style-local-36-container kubio-post-categories-container" data-kubio="kubio/post-categories"><div class="position-relative wp-block-kubio-post-categories__tags style-up5pQ_Cww-tags style-local-36-tags"><a href="https://sciences-du-numerique.fr/internet">Internet</a></div></div></div></div></div></div></div><div class="wp-block wp-block-kubio-row position-relative wp-block-kubio-row__container style-single-1uGRU27HVz-container style-local-37-container gutters-row-lg-0 gutters-row-v-lg-1 gutters-row-md-0 gutters-row-v-md-1 gutters-row-0 gutters-row-v-1" data-kubio="kubio/row"><div class="background-wrapper"><div class="background-layer background-layer-media-container-lg"></div><div class="background-layer background-layer-media-container-md"></div><div class="background-layer background-layer-media-container"></div></div><div class="position-relative wp-block-kubio-row__inner style-single-1uGRU27HVz-inner style-local-37-inner h-row align-items-lg-stretch align-items-md-stretch align-items-stretch justify-content-lg-start justify-content-md-start justify-content-start gutters-col-lg-0 gutters-col-v-lg-1 gutters-col-md-0 gutters-col-v-md-1 gutters-col-0 gutters-col-v-1"><div class="wp-block wp-block-kubio-column position-relative wp-block-kubio-column__container style-single-K4Akm2YNqS-container style-local-38-container d-flex h-col-lg-auto h-col-md-auto h-col-auto" data-kubio="kubio/column"><div class="position-relative wp-block-kubio-column__inner style-single-K4Akm2YNqS-inner style-local-38-inner d-flex h-flex-basis h-px-lg-3 v-inner-lg-3 h-px-md-3 v-inner-md-3 h-px-3 v-inner-3"><div class="background-wrapper"><div class="background-layer background-layer-media-container-lg"></div><div class="background-layer background-layer-media-container-md"></div><div class="background-layer background-layer-media-container"></div></div><div class="position-relative wp-block-kubio-column__align style-single-K4Akm2YNqS-align style-local-38-align h-y-container h-column__content h-column__v-align flex-basis-100 align-self-lg-start align-self-md-start align-self-start"><p class="wp-block wp-block-kubio-text position-relative wp-block-kubio-text__text style-single-1pwRcGAnh-text style-local-39-text" data-kubio="kubio/text">Tags:</p><div class="wp-block wp-block-kubio-post-tags position-relative wp-block-kubio-post-tags__container style-single-tlSt_AyBi-container style-local-40-container kubio-post-tags-container" data-kubio="kubio/post-tags"><div class="position-relative wp-block-kubio-post-tags__placeholder style-single-tlSt_AyBi-placeholder style-local-40-placeholder kubio-post-tags-placeholder">No tags</div><div class="position-relative wp-block-kubio-post-tags__tags style-single-tlSt_AyBi-tags style-local-40-tags"></div></div></div></div></div></div></div><div class="wp-block wp-block-kubio-query-pagination position-relative wp-block-kubio-query-pagination__container style-single-nqLiVZCaYo-container style-local-41-container gutters-row-lg-0 gutters-row-v-lg-0 gutters-row-md-0 gutters-row-v-md-0 gutters-row-0 gutters-row-v-0" data-kubio="kubio/query-pagination"><div class="background-wrapper"><div class="background-layer background-layer-media-container-lg"></div><div class="background-layer background-layer-media-container-md"></div><div class="background-layer background-layer-media-container"></div></div><div class="position-relative wp-block-kubio-query-pagination__inner style-single-nqLiVZCaYo-inner style-local-41-inner h-row align-items-lg-stretch align-items-md-stretch align-items-stretch justify-content-lg-center justify-content-md-center justify-content-center gutters-col-lg-0 gutters-col-v-lg-0 gutters-col-md-0 gutters-col-v-md-0 gutters-col-0 gutters-col-v-0"><div class="wp-block wp-block-kubio-column position-relative wp-block-kubio-column__container style-single-3ndM77FkZV-container style-local-42-container d-flex h-col-lg h-col-md h-col-auto" data-kubio="kubio/column"><div class="position-relative wp-block-kubio-column__inner style-single-3ndM77FkZV-inner style-local-42-inner d-flex h-flex-basis h-px-lg-0 v-inner-lg-2 h-px-md-0 v-inner-md-2 h-px-0 v-inner-2"><div class="background-wrapper"><div class="background-layer background-layer-media-container-lg"></div><div class="background-layer background-layer-media-container-md"></div><div class="background-layer background-layer-media-container"></div></div><div class="position-relative wp-block-kubio-column__align style-single-3ndM77FkZV-align style-local-42-align h-y-container h-column__content h-column__v-align flex-basis-100 align-self-lg-start align-self-md-start align-self-start"><div class="position-relative wp-block-kubio-pagination-nav-button__spacing style-single-ELgmeRXRD--spacing style-local-43-spacing"><span class="wp-block wp-block-kubio-pagination-nav-button position-relative wp-block-kubio-pagination-nav-button__outer style-single-ELgmeRXRD--outer style-local-43-outer kubio-button-container" data-kubio="kubio/pagination-nav-button"><a class="position-relative wp-block-kubio-pagination-nav-button__link style-single-ELgmeRXRD--link style-local-43-link h-w-100 h-global-transition" href="https://sciences-du-numerique.fr/projets-arduino-2025"><span class="position-relative wp-block-kubio-pagination-nav-button__text style-single-ELgmeRXRD--text style-local-43-text kubio-inherit-typography">Previous</span></a></span></div></div></div></div><div class="wp-block wp-block-kubio-column position-relative wp-block-kubio-column__container style-single-mMPMCQqWfs-container style-local-44-container d-flex h-col-lg h-col-md h-col-auto" data-kubio="kubio/column"><div class="position-relative wp-block-kubio-column__inner style-single-mMPMCQqWfs-inner style-local-44-inner d-flex h-flex-basis h-px-lg-0 v-inner-lg-2 h-px-md-0 v-inner-md-2 h-px-0 v-inner-2"><div class="background-wrapper"><div class="background-layer background-layer-media-container-lg"></div><div class="background-layer background-layer-media-container-md"></div><div class="background-layer background-layer-media-container"></div></div><div class="position-relative wp-block-kubio-column__align style-single-mMPMCQqWfs-align style-local-44-align h-y-container h-column__content h-column__v-align flex-basis-100 align-self-lg-start align-self-md-start align-self-start"><div class="position-relative wp-block-kubio-pagination-nav-button__spacing style-single-ACSe8L2gsX-spacing style-local-45-spacing"><span class="wp-block wp-block-kubio-pagination-nav-button position-relative wp-block-kubio-pagination-nav-button__outer style-single-ACSe8L2gsX-outer style-local-45-outer kubio-button-container" data-kubio="kubio/pagination-nav-button"><a class="position-relative wp-block-kubio-pagination-nav-button__link style-single-ACSe8L2gsX-link style-local-45-link h-w-100 h-global-transition" href="https://sciences-du-numerique.fr/fonctions-principales-programmation"><span class="position-relative wp-block-kubio-pagination-nav-button__text style-single-ACSe8L2gsX-text style-local-45-text kubio-inherit-typography">Next</span></a></span></div></div></div></div></div></div><div class="wp-block wp-block-kubio-post-comments kubio-migration--1 position-relative wp-block-kubio-post-comments__commentsContainer style-single-s5UQRGEAN-commentsContainer style-local-46-commentsContainer" data-kubio="kubio/post-comments"><p class="comments-disabled">Comments are closed</p></div><div class="wp-block wp-block-kubio-post-comments-form position-relative wp-block-kubio-post-comments-form__container style-single-oXoikmHxB-container style-local-47-container" data-kubio="kubio/post-comments-form"></div></div></div></div><div class="wp-block wp-block-kubio-column position-relative wp-block-kubio-column__container style-single-f5wDJx69T0o-container style-local-48-container d-flex h-col-lg-auto h-col-md-auto h-col-auto" data-kubio="kubio/column"><div class="position-relative wp-block-kubio-column__inner style-single-f5wDJx69T0o-inner style-local-48-inner d-flex h-flex-basis h-px-lg-2 v-inner-lg-0 h-px-md-2 v-inner-md-0 h-px-2 v-inner-0"><div class="background-wrapper"><div class="background-layer background-layer-media-container-lg"></div><div class="background-layer background-layer-media-container-md"></div><div class="background-layer background-layer-media-container"></div></div><div class="position-relative wp-block-kubio-column__align style-single-f5wDJx69T0o-align style-local-48-align h-y-container h-column__content h-column__v-align flex-basis-100 align-self-lg-start align-self-md-start align-self-start"><div class="wp-block wp-block-kubio-sidebar position-relative wp-block-kubio-sidebar__container style-single-qlHAH4aftky-container style-local-49-container" data-kubio="kubio/sidebar"><div class="wp-block wp-block-kubio-row position-relative wp-block-kubio-row__container style-theme-t1RcpSwTMC-container style-local-50-container gutters-row-lg-0 gutters-row-v-lg-0 gutters-row-md-0 gutters-row-v-md-0 gutters-row-3 gutters-row-v-0" data-kubio="kubio/row"><div class="background-wrapper"><div class="background-layer background-layer-media-container-lg"></div><div class="background-layer background-layer-media-container-md"></div><div class="background-layer background-layer-media-container"></div></div><div class="position-relative wp-block-kubio-row__inner style-theme-t1RcpSwTMC-inner style-local-50-inner h-row align-items-lg-stretch align-items-md-stretch align-items-stretch justify-content-lg-center justify-content-md-center justify-content-center gutters-col-lg-0 gutters-col-v-lg-0 gutters-col-md-0 gutters-col-v-md-0 gutters-col-3 gutters-col-v-0"><div class="wp-block wp-block-kubio-column position-relative wp-block-kubio-column__container style-theme-HE2LPNtfKX-container style-local-51-container d-flex h-col-lg-auto h-col-md-auto h-col-auto" data-kubio="kubio/column"><div class="position-relative wp-block-kubio-column__inner style-theme-HE2LPNtfKX-inner style-local-51-inner d-flex h-flex-basis h-px-lg-0 v-inner-lg-0 h-px-md-0 v-inner-md-0 h-px-0 v-inner-0"><div class="background-wrapper"><div class="background-layer background-layer-media-container-lg"></div><div class="background-layer background-layer-media-container-md"></div><div class="background-layer background-layer-media-container"></div></div><div class="position-relative wp-block-kubio-column__align style-theme-HE2LPNtfKX-align style-local-51-align h-y-container h-column__content h-column__v-align flex-basis-100 align-self-lg-start align-self-md-start align-self-start"><div class="wp-block wp-block-kubio-search-form position-relative wp-block-kubio-search-form__outer style-theme-ciaK61IeR-outer style-local-52-outer" data-kubio="kubio/search-form"><form class="position-relative wp-block-kubio-search-form__form style-theme-ciaK61IeR-form style-local-52-form d-flex search-form" action="https://sciences-du-numerique.fr" method="GET"><div class="position-relative wp-block-kubio-search-form__lightbox style-theme-ciaK61IeR-lightbox style-local-52-lightbox"></div><input class="position-relative wp-block-kubio-search-form__input style-theme-ciaK61IeR-input style-local-52-input search-input" placeholder="Search..." value="" name="s" /><button class="position-relative wp-block-kubio-search-form__button style-theme-ciaK61IeR-button style-local-52-button search-button"><span class="position-relative wp-block-kubio-search-form__buttonText style-theme-ciaK61IeR-buttonText style-local-52-buttonText">Search</span></button></form></div><h4 class="wp-block wp-block-kubio-heading position-relative wp-block-kubio-heading__text style-theme-R9xOJzpKQW0-text style-local-53-text" data-kubio="kubio/heading">Latest Comments</h4><ol class="has-avatars has-dates aligncenter wp-block-latest-comments style-dAlw2G59Yo-widget-box style-local-Qv78Ez7ps-widget-box wp-block-kubio-core-latest-comments__widget-box"><li class="wp-block-latest-comments__comment"><img alt='' src="https://sciences-du-numerique.fr/core/cache/flying-press/gravatar-fd078b894ba1.png" srcset="https://sciences-du-numerique.fr/core/cache/flying-press/gravatar-43c9e1525b49.png 2x" class='avatar avatar-48 photo avatar-default wp-block-latest-comments__comment-avatar' height='48' width='48' loading="lazy" decoding='async' fetchpriority="low" sizes="auto"/><article><footer class="wp-block-latest-comments__comment-meta"><span class="wp-block-latest-comments__comment-author">Zypher Moriarty</span> sur <a class="wp-block-latest-comments__comment-link" href="https://sciences-du-numerique.fr/projet-javascript-debutants#comment-574">projet JavaScript simple à réaliser : guide complet pour débutants</a><time datetime="2025-12-06T00:43:39+05:30" class="wp-block-latest-comments__comment-date">6 décembre 2025</time></footer></article></li><li class="wp-block-latest-comments__comment"><img alt='' src="https://sciences-du-numerique.fr/core/cache/flying-press/gravatar-fd078b894ba1.png" srcset="https://sciences-du-numerique.fr/core/cache/flying-press/gravatar-43c9e1525b49.png 2x" class='avatar avatar-48 photo avatar-default wp-block-latest-comments__comment-avatar' height='48' width='48' loading="lazy" decoding='async' fetchpriority="low" sizes="auto"/><article><footer class="wp-block-latest-comments__comment-meta"><span class="wp-block-latest-comments__comment-author">Zephyrin Lumins</span> sur <a class="wp-block-latest-comments__comment-link" href="https://sciences-du-numerique.fr/projet-javascript-debutants#comment-573">projet JavaScript simple à réaliser : guide complet pour débutants</a><time datetime="2025-12-06T00:43:37+05:30" class="wp-block-latest-comments__comment-date">6 décembre 2025</time></footer></article></li><li class="wp-block-latest-comments__comment"><img alt='' src="https://sciences-du-numerique.fr/core/cache/flying-press/gravatar-fd078b894ba1.png" srcset="https://sciences-du-numerique.fr/core/cache/flying-press/gravatar-43c9e1525b49.png 2x" class='avatar avatar-48 photo avatar-default wp-block-latest-comments__comment-avatar' height='48' width='48' loading="lazy" decoding='async' fetchpriority="low" sizes="auto"/><article><footer class="wp-block-latest-comments__comment-meta"><span class="wp-block-latest-comments__comment-author">Alizée Lumina</span> sur <a class="wp-block-latest-comments__comment-link" href="https://sciences-du-numerique.fr/projet-javascript-debutants#comment-572">projet JavaScript simple à réaliser : guide complet pour débutants</a><time datetime="2025-12-05T21:24:41+05:30" class="wp-block-latest-comments__comment-date">5 décembre 2025</time></footer></article></li><li class="wp-block-latest-comments__comment"><img alt='' src="https://sciences-du-numerique.fr/core/cache/flying-press/gravatar-fd078b894ba1.png" srcset="https://sciences-du-numerique.fr/core/cache/flying-press/gravatar-43c9e1525b49.png 2x" class='avatar avatar-48 photo avatar-default wp-block-latest-comments__comment-avatar' height='48' width='48' loading="lazy" decoding='async' fetchpriority="low" sizes="auto"/><article><footer class="wp-block-latest-comments__comment-meta"><span class="wp-block-latest-comments__comment-author">Armand Jammot</span> sur <a class="wp-block-latest-comments__comment-link" href="https://sciences-du-numerique.fr/compte-est-bon-astuces#comment-571">solution complète pour le jeu le compte est bon : méthodes et astuces</a><time datetime="2025-12-05T21:24:39+05:30" class="wp-block-latest-comments__comment-date">5 décembre 2025</time></footer></article></li><li class="wp-block-latest-comments__comment"><img alt='' src="https://sciences-du-numerique.fr/core/cache/flying-press/gravatar-fd078b894ba1.png" srcset="https://sciences-du-numerique.fr/core/cache/flying-press/gravatar-43c9e1525b49.png 2x" class='avatar avatar-48 photo avatar-default wp-block-latest-comments__comment-avatar' height='48' width='48' loading="lazy" decoding='async' fetchpriority="low" sizes="auto"/><article><footer class="wp-block-latest-comments__comment-meta"><span class="wp-block-latest-comments__comment-author">Zélia Cortelyon</span> sur <a class="wp-block-latest-comments__comment-link" href="https://sciences-du-numerique.fr/projet-javascript-debutants#comment-570">projet JavaScript simple à réaliser : guide complet pour débutants</a><time datetime="2025-12-05T18:03:45+05:30" class="wp-block-latest-comments__comment-date">5 décembre 2025</time></footer></article></li></ol></div></div></div></div></div></div></div></div></div></div></div></div></div> <div class="wp-block wp-block-kubio-footer position-relative wp-block-kubio-footer__container style-single-theme-gt1_zEKay-container style-local-54-container" data-kubio="kubio/footer" data-kubio-component="footer-parallax" data-kubio-settings="{"isEnabled":null}"><div class="wp-block wp-block-kubio-section position-relative wp-block-kubio-section__outer style-vP0mYzy99sE-outer style-local-55-outer d-flex h-section-global-spacing align-items-lg-center align-items-md-center align-items-center" data-kubio="kubio/section" id="footer"><div class="background-wrapper"><div class="background-layer background-layer-media-container-lg"></div><div class="background-layer background-layer-media-container-md"></div><div class="background-layer background-layer-media-container"></div></div><div class="position-relative wp-block-kubio-section__inner style-vP0mYzy99sE-inner style-local-55-inner h-section-grid-container h-section-boxed-container"><div class="wp-block wp-block-kubio-row position-relative wp-block-kubio-row__container style-e6PC03TfkKI-container style-local-56-container gutters-row-lg-2 gutters-row-v-lg-2 gutters-row-md-2 gutters-row-v-md-2 gutters-row-0 gutters-row-v-2" data-kubio="kubio/row"><div class="background-wrapper"><div class="background-layer background-layer-media-container-lg"></div><div class="background-layer background-layer-media-container-md"></div><div class="background-layer background-layer-media-container"></div></div><div class="position-relative wp-block-kubio-row__inner style-e6PC03TfkKI-inner style-local-56-inner h-row align-items-lg-stretch align-items-md-stretch align-items-stretch justify-content-lg-center justify-content-md-center justify-content-center gutters-col-lg-2 gutters-col-v-lg-2 gutters-col-md-2 gutters-col-v-md-2 gutters-col-0 gutters-col-v-2"><div class="wp-block wp-block-kubio-column position-relative wp-block-kubio-column__container style-nJpox2eRXHV-container style-local-57-container d-flex h-col-lg-12 h-col-md-12 h-col-12" data-kubio="kubio/column"><div class="position-relative wp-block-kubio-column__inner style-nJpox2eRXHV-inner style-local-57-inner d-flex h-flex-basis h-px-lg-2 v-inner-lg-2 h-px-md-2 v-inner-md-2 h-px-2 v-inner-2"><div class="background-wrapper"><div class="background-layer background-layer-media-container-lg"></div><div class="background-layer background-layer-media-container-md"></div><div class="background-layer background-layer-media-container"></div></div><div class="position-relative wp-block-kubio-column__align style-nJpox2eRXHV-align style-local-57-align h-y-container h-column__content h-column__v-align flex-basis-100 align-self-lg-start align-self-md-start align-self-start"><div class="wp-block wp-block-kubio-copyright position-relative wp-block-kubio-copyright__outer style-tF8kitdcL-outer style-local-58-outer" data-kubio="kubio/copyright"><p>© 2026 Sciences du numérique. Created with ❤ using WordPress and <a href="https://kubiobuilder.com" target="_blank" rel="noopener">Kubio</a></p></div></div></div></div></div></div></div></div></div></div> <script data-name="colibri-frontend-data" defer src="data:text/javascript,window.kubioFrontendData%20%3D%20%5B%5D%3B"></script> <script defer src="data:text/javascript,%2F%2F%20Do%20not%20change%20this%20comment%20line%20otherwise%20Speed%20Optimizer%20won%27t%20be%20able%20to%20detect%20this%20script%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%28function%20%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20function%20sendRequest%28url%2C%20body%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21window.fetch%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20xhr%20%3D%20new%20XMLHttpRequest%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xhr.open%28%22POST%22%2C%20url%2C%20true%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xhr.setRequestHeader%28%22Content-Type%22%2C%20%22application%2Fjson%3Bcharset%3DUTF-8%22%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20xhr.send%28JSON.stringify%28body%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20request%20%3D%20fetch%28url%2C%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20method%3A%20%27POST%27%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20body%3A%20JSON.stringify%28body%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20keepalive%3A%20true%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20headers%3A%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%27Content-Type%27%3A%20%27application%2Fjson%3Bcharset%3DUTF-8%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20calculateParentDistance%20%3D%20%28child%2C%20parent%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20count%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20currentElement%20%3D%20child%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Traverse%20up%20the%20DOM%20tree%20until%20we%20reach%20parent%20or%20the%20top%20of%20the%20DOM%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20while%20%28currentElement%20%26%26%20currentElement%20%21%3D%3D%20parent%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20currentElement%20%3D%20currentElement.parentNode%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20count%2B%2B%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20If%20parent%20was%20not%20found%20in%20the%20hierarchy%2C%20return%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21currentElement%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20-1%3B%20%2F%2F%20Indicates%20parent%20is%20not%20an%20ancestor%20of%20element%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20count%3B%20%2F%2F%20Number%20of%20layers%20between%20element%20and%20parent%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20isMatchingClass%20%3D%20%28linkRule%2C%20href%2C%20classes%2C%20ids%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20classes.includes%28linkRule.value%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20isMatchingId%20%3D%20%28linkRule%2C%20href%2C%20classes%2C%20ids%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20ids.includes%28linkRule.value%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20isMatchingDomain%20%3D%20%28linkRule%2C%20href%2C%20classes%2C%20ids%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21URL.canParse%28href%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20url%20%3D%20new%20URL%28href%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20host%20%3D%20url.host%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20hostsToMatch%20%3D%20%5Bhost%5D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28host.startsWith%28%27www.%27%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20hostsToMatch.push%28host.substring%284%29%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20hostsToMatch.push%28%27www.%27%20%2B%20host%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20hostsToMatch.includes%28linkRule.value%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20isMatchingExtension%20%3D%20%28linkRule%2C%20href%2C%20classes%2C%20ids%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21URL.canParse%28href%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20url%20%3D%20new%20URL%28href%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20url.pathname.endsWith%28%27.%27%20%2B%20linkRule.value%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20isMatchingSubdirectory%20%3D%20%28linkRule%2C%20href%2C%20classes%2C%20ids%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21URL.canParse%28href%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20url%20%3D%20new%20URL%28href%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20url.pathname.startsWith%28%27%2F%27%20%2B%20linkRule.value%20%2B%20%27%2F%27%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20isMatchingProtocol%20%3D%20%28linkRule%2C%20href%2C%20classes%2C%20ids%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21URL.canParse%28href%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20url%20%3D%20new%20URL%28href%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20url.protocol%20%3D%3D%3D%20linkRule.value%20%2B%20%27%3A%27%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20isMatchingExternal%20%3D%20%28linkRule%2C%20href%2C%20classes%2C%20ids%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21URL.canParse%28href%29%20%7C%7C%20%21URL.canParse%28document.location.href%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20matchingProtocols%20%3D%20%5B%27http%3A%27%2C%20%27https%3A%27%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20siteUrl%20%3D%20new%20URL%28document.location.href%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20linkUrl%20%3D%20new%20URL%28href%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Links%20to%20subdomains%20will%20appear%20to%20be%20external%20matches%20according%20to%20JavaScript%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20but%20the%20PHP%20rules%20will%20filter%20those%20events%20out.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20matchingProtocols.includes%28linkUrl.protocol%29%20%26%26%20siteUrl.host%20%21%3D%3D%20linkUrl.host%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20isMatch%20%3D%20%28linkRule%2C%20href%2C%20classes%2C%20ids%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20switch%20%28linkRule.type%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20%27class%27%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20isMatchingClass%28linkRule%2C%20href%2C%20classes%2C%20ids%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20%27id%27%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20isMatchingId%28linkRule%2C%20href%2C%20classes%2C%20ids%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20%27domain%27%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20isMatchingDomain%28linkRule%2C%20href%2C%20classes%2C%20ids%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20%27extension%27%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20isMatchingExtension%28linkRule%2C%20href%2C%20classes%2C%20ids%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20%27subdirectory%27%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20isMatchingSubdirectory%28linkRule%2C%20href%2C%20classes%2C%20ids%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20%27protocol%27%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20isMatchingProtocol%28linkRule%2C%20href%2C%20classes%2C%20ids%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20case%20%27external%27%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20isMatchingExternal%28linkRule%2C%20href%2C%20classes%2C%20ids%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20default%3A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20track%20%3D%20%28element%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20href%20%3D%20element.href%20%3F%3F%20null%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20classes%20%3D%20Array.from%28element.classList%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20ids%20%3D%20%5Belement.id%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20linkRules%20%3D%20%5B%7B%22type%22%3A%22extension%22%2C%22value%22%3A%22pdf%22%7D%2C%7B%22type%22%3A%22extension%22%2C%22value%22%3A%22zip%22%7D%2C%7B%22type%22%3A%22protocol%22%2C%22value%22%3A%22mailto%22%7D%2C%7B%22type%22%3A%22protocol%22%2C%22value%22%3A%22tel%22%7D%5D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28linkRules.length%20%3D%3D%3D%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20For%20link%20rules%20that%20target%20an%20id%2C%20we%20need%20to%20allow%20that%20id%20to%20appear%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20in%20any%20ancestor%20up%20to%20the%207th%20ancestor.%20This%20loop%20looks%20for%20those%20matches%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20and%20counts%20them.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20linkRules.forEach%28%28linkRule%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28linkRule.type%20%21%3D%3D%20%27id%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20matchingAncestor%20%3D%20element.closest%28%27%23%27%20%2B%20linkRule.value%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21matchingAncestor%20%7C%7C%20matchingAncestor.matches%28%27html%2C%20body%27%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20depth%20%3D%20calculateParentDistance%28element%2C%20matchingAncestor%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28depth%20%3C%207%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ids.push%28linkRule.value%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20For%20link%20rules%20that%20target%20a%20class%2C%20we%20need%20to%20allow%20that%20class%20to%20appear%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20in%20any%20ancestor%20up%20to%20the%207th%20ancestor.%20This%20loop%20looks%20for%20those%20matches%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20and%20counts%20them.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20linkRules.forEach%28%28linkRule%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28linkRule.type%20%21%3D%3D%20%27class%27%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20matchingAncestor%20%3D%20element.closest%28%27.%27%20%2B%20linkRule.value%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21matchingAncestor%20%7C%7C%20matchingAncestor.matches%28%27html%2C%20body%27%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20depth%20%3D%20calculateParentDistance%28element%2C%20matchingAncestor%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28depth%20%3C%207%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20classes.push%28linkRule.value%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20hasMatch%20%3D%20linkRules.some%28%28linkRule%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20isMatch%28linkRule%2C%20href%2C%20classes%2C%20ids%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21hasMatch%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20url%20%3D%20%22https%3A%2F%2Fsciences-du-numerique.fr%2Fcore%2Fmodules%2Findependent-analytics-pro%2Fiawp-click-endpoint.php%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20body%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20href%3A%20href%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20classes%3A%20classes.join%28%27%20%27%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20ids%3A%20ids.join%28%27%20%27%29%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20...%7B%22payload%22%3A%7B%22resource%22%3A%22singular%22%2C%22singular_id%22%3A6866%2C%22page%22%3A1%7D%2C%22signature%22%3A%22e4d215bd20dc0c79411b9d6fdfc553b8%22%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sendRequest%28url%2C%20body%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.addEventListener%28%27mousedown%27%2C%20function%20%28event%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28navigator.webdriver%20%7C%7C%20%2Fbot%7Ccrawler%7Cspider%7Ccrawling%7Csemrushbot%7Cchrome-lighthouse%2Fi.test%28navigator.userAgent%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20element%20%3D%20event.target.closest%28%27a%27%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21element%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20isPro%20%3D%20true%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21isPro%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%20Don%27t%20track%20left%20clicks%20with%20this%20event.%20The%20click%20event%20is%20used%20for%20that.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28event.button%20%3D%3D%3D%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20track%28element%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.addEventListener%28%27click%27%2C%20function%20%28event%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28navigator.webdriver%20%7C%7C%20%2Fbot%7Ccrawler%7Cspider%7Ccrawling%7Csemrushbot%7Cchrome-lighthouse%2Fi.test%28navigator.userAgent%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20element%20%3D%20event.target.closest%28%27a%2C%20button%2C%20input%5Btype%3D%22submit%22%5D%2C%20input%5Btype%3D%22button%22%5D%27%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21element%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20isPro%20%3D%20true%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21isPro%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20track%28element%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.addEventListener%28%27play%27%2C%20function%20%28event%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28navigator.webdriver%20%7C%7C%20%2Fbot%7Ccrawler%7Cspider%7Ccrawling%7Csemrushbot%7Cchrome-lighthouse%2Fi.test%28navigator.userAgent%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20element%20%3D%20event.target.closest%28%27audio%2C%20video%27%29%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21element%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20isPro%20%3D%20true%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%28%21isPro%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20track%28element%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20true%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.addEventListener%28%22DOMContentLoaded%22%2C%20function%20%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28document.hasOwnProperty%28%22visibilityState%22%29%20%26%26%20document.visibilityState%20%3D%3D%3D%20%22prerender%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28navigator.webdriver%20%7C%7C%20%2Fbot%7Ccrawler%7Cspider%7Ccrawling%7Csemrushbot%7Cchrome-lighthouse%2Fi.test%28navigator.userAgent%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20let%20referrer_url%20%3D%20null%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28typeof%20document.referrer%20%3D%3D%3D%20%27string%27%20%26%26%20document.referrer.length%20%3E%200%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20referrer_url%20%3D%20document.referrer%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20params%20%3D%20location.search.slice%281%29.split%28%27%26%27%29.reduce%28%28acc%2C%20s%29%20%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20%5Bk%2C%20v%5D%20%3D%20s.split%28%27%3D%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20Object.assign%28acc%2C%20%7B%5Bk%5D%3A%20v%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%20%7B%7D%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20url%20%3D%20%22https%3A%2F%2Fsciences-du-numerique.fr%2Fwp-json%2Fiawp%2Fsearch%22%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20body%20%3D%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20referrer_url%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20utm_source%3A%20params.utm_source%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20utm_medium%3A%20params.utm_medium%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20utm_campaign%3A%20params.utm_campaign%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20utm_term%3A%20params.utm_term%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20utm_content%3A%20params.utm_content%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gclid%3A%20params.gclid%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20...%7B%22payload%22%3A%7B%22resource%22%3A%22singular%22%2C%22singular_id%22%3A6866%2C%22page%22%3A1%7D%2C%22signature%22%3A%22e4d215bd20dc0c79411b9d6fdfc553b8%22%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20sendRequest%28url%2C%20body%29%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%28%29%3B"></script> <script type="text/javascript" id="wp-block-template-skip-link-js-after" defer src="data:text/javascript,%2F%2A%20%3C%21%5BCDATA%5B%20%2A%2F%0A%09%28%20function%28%29%20%7B%0A%09%09var%20skipLinkTarget%20%3D%20document.querySelector%28%20%27main%27%20%29%2C%0A%09%09%09sibling%2C%0A%09%09%09skipLinkTargetID%2C%0A%09%09%09skipLink%3B%0A%0A%09%09%2F%2F%20Early%20exit%20if%20a%20skip-link%20target%20can%27t%20be%20located.%0A%09%09if%20%28%20%21%20skipLinkTarget%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09%2F%2A%0A%09%09%20%2A%20Get%20the%20site%20wrapper.%0A%09%09%20%2A%20The%20skip-link%20will%20be%20injected%20in%20the%20beginning%20of%20it.%0A%09%09%20%2A%2F%0A%09%09sibling%20%3D%20document.querySelector%28%20%27.wp-site-blocks%27%20%29%3B%0A%0A%09%09%2F%2F%20Early%20exit%20if%20the%20root%20element%20was%20not%20found.%0A%09%09if%20%28%20%21%20sibling%20%29%20%7B%0A%09%09%09return%3B%0A%09%09%7D%0A%0A%09%09%2F%2F%20Get%20the%20skip-link%20target%27s%20ID%2C%20and%20generate%20one%20if%20it%20doesn%27t%20exist.%0A%09%09skipLinkTargetID%20%3D%20skipLinkTarget.id%3B%0A%09%09if%20%28%20%21%20skipLinkTargetID%20%29%20%7B%0A%09%09%09skipLinkTargetID%20%3D%20%27wp--skip-link--target%27%3B%0A%09%09%09skipLinkTarget.id%20%3D%20skipLinkTargetID%3B%0A%09%09%7D%0A%0A%09%09%2F%2F%20Create%20the%20skip%20link.%0A%09%09skipLink%20%3D%20document.createElement%28%20%27a%27%20%29%3B%0A%09%09skipLink.classList.add%28%20%27skip-link%27%2C%20%27screen-reader-text%27%20%29%3B%0A%09%09skipLink.id%20%3D%20%27wp-skip-link%27%3B%0A%09%09skipLink.href%20%3D%20%27%23%27%20%2B%20skipLinkTargetID%3B%0A%09%09skipLink.innerText%20%3D%20%27Aller%20au%20contenu%27%3B%0A%0A%09%09%2F%2F%20Inject%20the%20skip%20link.%0A%09%09sibling.parentElement.insertBefore%28%20skipLink%2C%20sibling%20%29%3B%0A%09%7D%28%29%20%29%3B%0A%09%0A%2F%2A%20%5D%5D%3E%20%2A%2F"></script> <script type="text/javascript" id="flying-press-vitals-js-extra" defer src="data:text/javascript,%2F%2A%20%3C%21%5BCDATA%5B%20%2A%2F%0Avar%20flying_press_vitals%20%3D%20%7B%22site_id%22%3A%22f14179b6ff01d0472c8aa10db70c65b3%22%7D%3B%0A%2F%2A%20%5D%5D%3E%20%2A%2F"></script> <script type="text/javascript" src="https://sciences-du-numerique.fr/core/modules/cdeaa14b73/assets/vitals.min.js" id="flying-press-vitals-js" defer></script> <script type="text/javascript" src="https://sciences-du-numerique.fr/lib/js/dist/hooks.min.js?rnd=71716" id="wp-hooks-js" defer></script> <script type="text/javascript" src="https://sciences-du-numerique.fr/lib/js/dist/i18n.min.js?rnd=71716" id="wp-i18n-js" defer></script> <script type="text/javascript" id="wp-i18n-js-after" defer src="data:text/javascript,%2F%2A%20%3C%21%5BCDATA%5B%20%2A%2F%0Awp.i18n.setLocaleData%28%20%7B%20%27text%20direction%5Cu0004ltr%27%3A%20%5B%20%27ltr%27%20%5D%20%7D%20%29%3B%0A%2F%2A%20%5D%5D%3E%20%2A%2F"></script> <script type="text/javascript" defer src="https://sciences-du-numerique.fr/core/modules/kubio-pro/build/scripts/index.js?rnd=71716" id="kubio-scripts-js"></script> <script type="text/javascript" defer src="https://sciences-du-numerique.fr/core/modules/kubio-pro/build/frontend/index.js?rnd=71716" id="kubio-frontend-js"></script> <script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra" defer src="data:text/javascript,%2F%2A%20%3C%21%5BCDATA%5B%20%2A%2F%0Avar%20eztoc_smooth_local%20%3D%20%7B%22scroll_offset%22%3A%2230%22%2C%22add_request_uri%22%3A%22%22%2C%22add_self_reference_link%22%3A%22%22%7D%3B%0A%2F%2A%20%5D%5D%3E%20%2A%2F"></script> <script type="text/javascript" src="https://sciences-du-numerique.fr/core/modules/a2174c3e6f/assets/js/smooth_scroll.min.js?rnd=71716" id="ez-toc-scroll-scriptjs-js" defer></script> <script type="text/javascript" src="https://sciences-du-numerique.fr/core/modules/a2174c3e6f/vendor/js-cookie/js.cookie.min.js?rnd=71716" id="ez-toc-js-cookie-js" defer></script> <script type="text/javascript" src="https://sciences-du-numerique.fr/core/modules/a2174c3e6f/vendor/sticky-kit/jquery.sticky-kit.min.js?rnd=71716" id="ez-toc-jquery-sticky-kit-js" defer></script> <script type="text/javascript" id="ez-toc-js-js-extra" defer src="data:text/javascript,%2F%2A%20%3C%21%5BCDATA%5B%20%2A%2F%0Avar%20ezTOC%20%3D%20%7B%22smooth_scroll%22%3A%221%22%2C%22visibility_hide_by_default%22%3A%22%22%2C%22scroll_offset%22%3A%2230%22%2C%22fallbackIcon%22%3A%22%5Cu003Cspan%20class%3D%5C%22%5C%22%5Cu003E%5Cu003Cspan%20class%3D%5C%22eztoc-hide%5C%22%20style%3D%5C%22display%3Anone%3B%5C%22%5Cu003EToggle%5Cu003C%2Fspan%5Cu003E%5Cu003Cspan%20class%3D%5C%22ez-toc-icon-toggle-span%5C%22%5Cu003E%5Cu003Csvg%20style%3D%5C%22fill%3A%20%23545454%3Bcolor%3A%23545454%5C%22%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%20class%3D%5C%22list-377408%5C%22%20width%3D%5C%2220px%5C%22%20height%3D%5C%2220px%5C%22%20viewBox%3D%5C%220%200%2024%2024%5C%22%20fill%3D%5C%22none%5C%22%5Cu003E%5Cu003Cpath%20d%3D%5C%22M6%206H4v2h2V6zm14%200H8v2h12V6zM4%2011h2v2H4v-2zm16%200H8v2h12v-2zM4%2016h2v2H4v-2zm16%200H8v2h12v-2z%5C%22%20fill%3D%5C%22currentColor%5C%22%5Cu003E%5Cu003C%2Fpath%5Cu003E%5Cu003C%2Fsvg%5Cu003E%5Cu003Csvg%20style%3D%5C%22fill%3A%20%23545454%3Bcolor%3A%23545454%5C%22%20class%3D%5C%22arrow-unsorted-368013%5C%22%20xmlns%3D%5C%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%5C%22%20width%3D%5C%2210px%5C%22%20height%3D%5C%2210px%5C%22%20viewBox%3D%5C%220%200%2024%2024%5C%22%20version%3D%5C%221.2%5C%22%20baseProfile%3D%5C%22tiny%5C%22%5Cu003E%5Cu003Cpath%20d%3D%5C%22M18.2%209.3l-6.2-6.3-6.2%206.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3%200%20.5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8%2014.7l6.2%206.3%206.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3%200-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z%5C%22%2F%5Cu003E%5Cu003C%2Fsvg%5Cu003E%5Cu003C%2Fspan%5Cu003E%5Cu003C%2Fspan%5Cu003E%22%2C%22chamomile_theme_is_on%22%3A%22%22%7D%3B%0A%2F%2A%20%5D%5D%3E%20%2A%2F"></script> <script type="text/javascript" src="https://sciences-du-numerique.fr/core/modules/a2174c3e6f/assets/js/front.min.js?rnd=71716" id="ez-toc-js-js" defer></script> <script id="wp-emoji-settings" type="application/json"> {"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://sciences-du-numerique.fr/lib/js/wp-emoji-release.min.js?rnd=71716"}} </script> <script type="module"> /* <![CDATA[ */ /*! This file is auto-generated */ const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))}); /* ]]> */ </script> <script type="text/javascript" defer src="data:text/javascript,%2F%2F%3C%21%5BCDATA%5B%0A%20%20%20%20%20%20%20%20%20%20%20%20%28function%20%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22use%20strict%22%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20function%20__IsDevToolOpen%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20widthDiff%20%3D%20window.outerWidth%20-%20window.innerWidth%20%3E%20160%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20const%20heightDiff%20%3D%20window.outerHeight%20-%20window.innerHeight%20%3E%20160%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28navigator.userAgent.match%28%2FiPhone%2Fi%29%29%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28%21%28heightDiff%20%26%26%20widthDiff%29%20%26%26%20%28%28window.Firebug%20%26%26%20window.Firebug.chrome%20%26%26%20window.Firebug.chrome.isInitialized%29%20%7C%7C%20widthDiff%20%7C%7C%20heightDiff%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.dispatchEvent%28new%20Event%28%27hmwp_is_devtool%27%29%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20true%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20__devToolCheckInterval%20%3D%20setInterval%28__IsDevToolOpen%2C%20500%29%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20function%20__disableOpen404%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.documentElement.remove%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20function%20__showError%28message%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20div%20%3D%20document.getElementById%28%27disable_msg%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28message%20%21%3D%3D%20%27%27%20%26%26%20div%20%26%26%20%28%21div.style.display%20%7C%7C%20div.style.display%20%3D%3D%3D%20%27none%27%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20div.innerHTML%20%3D%20message%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20div.style.display%20%3D%20%27block%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout%28function%20%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20div.style.display%20%3D%20%27none%27%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C%201000%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20function%20__disableEventListener%28element%2C%20eventNames%2C%20message%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20var%20events%20%3D%20eventNames.split%28%27%20%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20events.forEach%28function%20%28event%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20element.addEventListener%28event%2C%20function%20%28e%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20e.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28message%20%21%3D%3D%20%27%27%29%20__showError%28message%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20function%20__returnFalse%28%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%09%09%09%09%09%09%09%09%09%09%09%09document.addEventListener%28%22contextmenu%22%2C%20function%20%28event%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if%20%28event.keyCode%20%3D%3D%3D%20123%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20__showError%28%27%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.addEventListener%28%22keydown%22%2C%20function%20%28event%29%20%7B%0A%09%09%09%09%09if%20%28event.keyCode%20%3D%3D%3D%20123%20%7C%7C%20%28event.ctrlKey%20%26%26%20event.shiftKey%20%26%26%20event.keyCode%20%3D%3D%3D%2067%29%20%7C%7C%20%28%28event.ctrlKey%20%7C%7C%20event.metaKey%29%20%26%26%20event.shiftKey%20%26%26%20event.keyCode%20%3D%3D%3D%2073%29%20%7C%7C%20%28event.ctrlKey%20%26%26%20event.shiftKey%20%26%26%20event.keyCode%20%3D%3D%3D%2075%29%20%7C%7C%20%28event.ctrlKey%20%26%26%20event.shiftKey%20%26%26%20event.keyCode%20%3D%3D%3D%2074%29%20%7C%7C%20%28event.keyCode%20%3D%3D%3D%2083%20%26%26%20%28event.ctrlKey%20%7C%7C%20event.metaKey%29%29%20%7C%7C%20%28event.keyCode%20%3D%3D%3D%2067%20%26%26%20event.metaKey%29%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20__showError%28%27%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%09%09%09%09%09if%20%28%28event.ctrlKey%20%7C%7C%20event.metaKey%29%20%26%26%20event.keyCode%20%3D%3D%3D%2085%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20__showError%28%27%27%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20document.addEventListener%28%22contextmenu%22%2C%20function%20%28event%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20event.preventDefault%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%3B%0A%09%09%09%09%09%09%09%09__disableEventListener%28document%2C%20%27contextmenu%27%2C%20%27%27%29%3B%09%09%09%09%09%09%09%09%20%20%20%20%20%20%20%20%20%20%20%20%7D%29%28%29%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%2F%2F%5D%5D%3E"></script> <style>#disable_msg { display: none; min-width: 250px; margin-left: -125px; background-color: #333; color: #fff; text-align: center; border-radius: 2px; padding: 16px; position: fixed; z-index: 999; left: 50%; bottom: 30px; font-size: 17px } }</style> <div id="disable_msg"></div><script defer src="data:text/javascript,function%20load_flying_press_youtube_video%28t%29%7Blet%20e%3Ddocument.createElement%28%22iframe%22%29%3Be.setAttribute%28%22src%22%2Ct.getAttribute%28%22data-src%22%29%29%2Ce.setAttribute%28%22frameborder%22%2C%220%22%29%2Ce.setAttribute%28%22allowfullscreen%22%2C%221%22%29%2Ce.setAttribute%28%22allow%22%2C%22autoplay%3B%20encrypted-media%3B%20gyroscope%3B%22%29%2Ct.innerHTML%3D%22%22%2Ct.appendChild%28e%29%7D"></script> <script>!function(e){"function"==typeof define&&define.amd?define(e):e()}(function(){!function(){var e,t=!1,n=!1,r=Array.from(document.querySelectorAll("script[data-loading-method][data-src]")),o=r.filter(function(e){return"idle"===e.dataset.loadingMethod}),a=r.filter(function(e){return"user-interaction"===e.dataset.loadingMethod}),i=document.querySelectorAll("link[data-href]");if(r.length||i.length){var c=["readystatechange","DOMContentLoaded","load"],u={readystatechange:[],DOMContentLoaded:[],load:[]},l=!1,d=EventTarget.prototype.addEventListener;EventTarget.prototype.addEventListener=function(e,t,n){if(!l||!c.includes(e))return d.call(this,e,t,n);u[e].push({target:this,listener:t,options:n})};var s=[{event:"click",target:document},{event:"mousemove",target:document},{event:"keydown",target:document},{event:"touchstart",target:document},{event:"touchmove",target:document},{event:"scroll",target:window}],f=function(e){s.forEach(function(t){return t.target.addEventListener(t.event,e,{passive:!0})})},v=function(e){s.forEach(function(t){return t.target.removeEventListener(t.event,e)})};window.requestIdleCallback=window.requestIdleCallback||function(e){return setTimeout(function(){var t=Date.now();e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)};var g=[],h=function(e){return g.push(e)};document.addEventListener("click",h,{passive:!0}),o.length&&window.requestIdleCallback(function(){return m(o)}),a.length&&(f(y),e=setTimeout(y,1e4)),f(function e(){i.forEach(function(e){e.href=e.getAttribute("data-href"),e.removeAttribute("data-href")}),v(e)})}function m(e){e.forEach(function(e){var t=e.getAttribute("data-src");if(!t.includes("data:")){var n=document.createElement("link");n.rel="preload",n.as="script",n.href=t,document.head.appendChild(n)}}),function r(o){if(o>e.length-1)n||(window.jQuery&&t&&window.jQuery.holdReady(!1),c.forEach(function(e){u[e].forEach(function(t){var n=t.target,r=t.listener;try{var o=new Event(e,{bubbles:!0,cancelable:!0});r.call(n,o)}catch(t){console.error("Error executing "+e+" listener:",t)}}),u[e].length=0}),document.removeEventListener("click",h),g.forEach(function(e){var t;return null==(t=e.target)?void 0:t.dispatchEvent(new MouseEvent("click",{bubbles:!0,cancelable:!0,clientX:e.clientX,clientY:e.clientY}))}),g.length=0,n=!0);else{var a=e[o].getAttribute("data-src");window.jQuery&&"function"==typeof window.jQuery.holdReady&&!t&&(window.jQuery.holdReady(!0),t=!0),window.requestIdleCallback(function(){var e=document.createElement("script");l=!0;var t=setTimeout(function(){l&&(l=!1,r(o+1))},1500);e.onload=function(){clearTimeout(t),l=!1,r(o+1)},e.onerror=function(){clearTimeout(t),l=!1,r(o+1)},e.src=a,document.head.appendChild(e)})}}(0)}function y(){e&&clearTimeout(e),v(y),m(a)}}(),[{selector:"video[data-lazy-src],iframe[data-lazy-src]",callback:function(e){return function(t){if(t.isIntersecting){var n=t.target.getAttribute("data-lazy-src");t.target.setAttribute("src",n),e.unobserve(t.target)}}}},{selector:".flying-press-lazy-bg",callback:function(e){return function(t){t.isIntersecting&&(t.target.classList.remove("flying-press-lazy-bg"),e.unobserve(t.target))}}},{selector:'[style*="content-visibility"]',callback:function(e){return function(t){t.isIntersecting&&(t.target.style.removeProperty("content-visibility"),t.target.style.removeProperty("contain-intrinsic-size"),e.unobserve(t.target))}}}].forEach(function(e){var t=e.selector,n=e.callback,r=new IntersectionObserver(function(e){e.forEach(n(r))},{rootMargin:"300px"});document.querySelectorAll(t).forEach(function(e){return r.observe(e)})})}); </script> </body> </html> <!-- Powered by FlyingPress for lightning-fast performance. Learn more: https://flyingpress.com. Cached at 1770167285 -->