Informations

Vignette
Article

Deux bonnes pratiques

Après plusieurs expérimentation, nous concluons que ces deux options sont les plus pertinentes pour intégrer des activités interactives dans Moodle. Ces options impliquent de demander à l'IAG de générer :

  • Un fichier HTML (potentiellement intégré à une page Moodle)
  • Un fichier Scorm (à être ajouté au fil d'activités de votre cours)

Auteur

Yvon et Dominic

Date

2026-06-16

Type de ressource

Article

Organisation

CSS de la Beauce-Etchemin

Fonction

Récit National

Production

Page HTML

Option 1 : générer un fichier HTML et l'intégrer dans une page Moodle (iFrame)

  1. Télécharger l'activité générée par l'IAG sous la forme d'un fichier HTML 
  2. Glisser-déposer ce fichier HTML à votre fil d'activité Moodle (en mode édition, dans la zone pointillée)
  3. Ajuster les paramètres d'ouverture de votre nouvelle ressource HTML (Apparence => Ouvrir)
  4. Copier l'URL (clic droit sur l'item de la liste des activités) 
  5. Créer une page Moodle
  6. Coller le code (ci-dessous) et remplacer la ligne URL_DE_VOTRE_RESSOURCE_HTML_ICI par l'URL copié à l'étape 4
  7. Enregistrer votre page

Avantages de cette option :

  • Vos apprenant(e)s ne sortent pas de l'environnement de votre cours pour vivre l'activité car l'activité est intégrée dans une page Moodle
  • Le script permet à votre activité interactive se s'ajuster dynamiquement (adéquatement) au contenu de votre activité générée par l'IAG
  • L'auteur peut imbriquer d'autres contenus à l'intérieur de sa page. (la balise <script> doit toujours être placée à la fin du code html)

<div class="container-fluid p-0 my-3">
                    <iframe class="auto-resize-iframe" 
                            src="URL_DE_VOTRE_RESSOURCE_HTML_ICI" 
                            title="Contenu pédagogique"
                            style="width: 100%; height: 300px; border: none; overflow: hidden; display: block;">
                    </iframe>
                </div>
                <script>
                (function() {
                    document.addEventListener("DOMContentLoaded", function() {
                        const iframes = document.querySelectorAll('.auto-resize-iframe');
                        const margeSecurite = 25; 
                        
                        iframes.forEach(iframe => {
                            iframe.addEventListener('load', function() {
                                try {
                                    const iframeDoc = iframe.contentWindow.document;
                                    
                                    // LE VERROU : empêche le script de s'auto-déclencher en boucle
                                    let isAdjusting = false;
                                    
                                    const ajusterHauteur = () => {
                                        if (isAdjusting) return;
                                        isAdjusting = true;
                                        
                                        // 1. On repasse temporairement en 'auto' pour couper l'effet d'étirement du CSS
                                        iframe.style.height = 'auto';
                                        
                                        // 2. On mesure la vraie hauteur naturelle du contenu
                                        const hauteurContenu = Math.max(
                                            iframeDoc.body.scrollHeight, 
                                            iframeDoc.documentElement.scrollHeight
                                        );
                                        
                                        // 3. On applique la bonne taille avec la marge
                                        iframe.style.height = (hauteurContenu + margeSecurite) + 'px';
                                        
                                        // 4. On relâche le verrou après un micro-délai pour laisser le DOM se stabiliser
                                        setTimeout(() => {
                                            isAdjusting = false;
                                        }, 50);
                                    };
                                    // Ajustement initial
                                    ajusterHauteur();
                                    // Observation des changements du contenu
                                    const resizeObserver = new ResizeObserver(() => {
                                        ajusterHauteur();
                                    });
                                    
                                    resizeObserver.observe(iframeDoc.body);
                                    
                                } catch (error) {
                                    console.warn("Impossible d'ajuster l'iframe dynamiquement : ", error);
                                    iframe.style.height = "750px"; 
                                    iframe.style.overflow = "auto";
                                }
                            });
                            
                            if (iframe.contentWindow && iframe.contentWindow.document.readyState === 'complete') {
                                iframe.dispatchEvent(new Event('load'));
                            }
                        });
                    });
                })();
                </script>
                

Option 2 : générer un fichier SCORM et l'intégrer à votre fil d'activités

Utilisez le générateur d'activité Scorm pour générer un tel fichier en tirant profit de l'IAG. Une fois le fichier Scorm généré, il ne vous restera qu'à le glisser-déposer dans le fil d'activités de votre cours Moodle.

Avantages de cette option :

  • Vos apprenant(e)s ne sortent pas de l'environnement de votre cours pour vire l'activité
  • La navigation n'est pas affectée
  • Étant donné que c'est une activité, il est possible de gérer les conditions d'achèvement et les restrictions
  • Des traces des apprentissages seront offertes au même titre qu'un test Moodle par exemple
  • Moins de manipulations nécessaires

Modifié le: jeudi, 18 juin 2026, 10:00