Un iFrame, ou Inline Frame, est un élément HTML qui vous permet d'intégrer un autre document HTML dans la page Web actuelle.

Qu'est-ce qu'un iFrame ?
Un iFrame, abréviation de Inline Frame, est un HTML élément qui permet l'intégration d'un document HTML externe dans les limites d'un autre document HTML. Il agit essentiellement comme une fenêtre qui peut afficher le contenu d'une autre page Web ou ressource, tout en restant partie intégrante de la page Web actuelle. Les iFrames sont largement utilisés à diverses fins, telles que l'intégration de vidéos, de cartes interactives, de publicités ou d'autres contenus dynamiques dans un site Web sans obliger les utilisateurs à quitter la page qu'ils consultent.
Comment fonctionne un iFrame ?
Un iFrame intègre un document HTML externe ou un autre contenu Web dans la page Web actuelle. Voici une explication étape par étape du fonctionnement de ce processus :
- Insertion de l'élément iFrame. Le processus commence lorsque le développeur ajoute un balise HTML de la page Web. Cette balise comprend des attributs tels que src, qui spécifie le URL du contenu externe à intégrer et d'autres attributs facultatifs tels que la largeur, la hauteur, la bordure du cadre et allowfullscreen pour contrôler l'apparence et le comportement de l'iFrame.
- Demander l'intention externe. Une fois que l'utilisateur navigateur charge la page Web contenant l'iFrame, le navigateur lit l'attribut src dans le tag et fait un séparé HTTP demande à l'URL spécifiée pour récupérer le contenu.
- Chargement du contenu externe. Le navigateur récupère le contenu externe, qui peut être un document HTML entier, un fichier multimédia ou toute autre ressource Web. Le contenu est traité comme un document indépendant au sein de la page Web principale. L'iFrame crée essentiellement une mini-fenêtre de navigateur à l'intérieur de la page Web parent, chargeant et restituant le contenu comme s'il s'agissait d'une page Web autonome.
- Rendu du contenu. Le navigateur affiche ensuite le contenu à l'intérieur des limites de l'iFrame. Le contenu intégré apparaît comme s'il faisait partie de la page Web principale, mais il fonctionne indépendamment. La page parent et le contenu de l'iFrame n'interagissent pas directement, bien qu'ils partagent le même espace visuel.
- Interaction et fonctionnalité. Les utilisateurs interagissent avec le contenu de l'iFrame comme ils le feraient avec n'importe quelle page Web. Par exemple, si l'iFrame contient un formulaire, les utilisateurs peuvent le remplir et le soumettre. Le contenu intégré peut inclure son propre JavaScript, CSS, et d’autres ressources, exécutées dans le contexte iFrame, séparément de la page parent.
- Cycle de vie du document indépendant. Le contenu intégré dans l'iFrame a son propre cycle de vie de document. Cela signifie qu'il charge, exécute scripts, et interagit avec ses propres ressources indépendamment de la page parent. Par exemple, si la page parent est rechargée, le contenu de l'iFrame sera également rechargé, mais son état et son comportement sont gérés séparément du document principal.
- Sécurité et restrictions. En raison des risques de sécurité potentiels, les navigateurs appliquent diverses restrictions sur le contenu iFrame. Par exemple, les politiques d'origine croisée empêchent les scripts de la page parent d'accéder au contenu d'un iFrame à partir d'un autre domaine. De plus, les développeurs utilisent des en-têtes et des attributs de sécurité tels que tas de sable pour limiter davantage ce que le contenu iFrame peut faire, comme désactiver les scripts ou empêcher les soumissions de formulaires.
Attributs d'un iFrame
Le Un élément HTML possède plusieurs attributs qui contrôlent son comportement, son apparence et son interaction avec le contenu qu'il affiche. Voici une explication détaillée des attributs clés :
- source Cet attribut spécifie l'URL du contenu externe à intégrer dans l'iFrame. C'est l'attribut le plus essentiel car il détermine quel contenu sera chargé dans l'iFrame. Par exemple, intégrera le contenu de "https://www.example.com" dans l'iFrame.
- largeur et hauteur. Ces attributs contrôlent la taille de l'iFrame en pixels ou en pourcentages. Par exemple, créera un iFrame de 600 pixels de large et 400 pixels de haut.
- bordure de cadre. Cet attribut spécifie si l'iFrame doit avoir une bordure. La valeur 0 signifie aucune bordure, tandis que 1 signifie une bordure visible. Cet attribut est désormais considéré comme obsolète, le CSS moderne étant le moyen privilégié pour styliser la bordure de l'iFrame.
- défilement. Cet attribut contrôle la visibilité des barres de défilement dans l'iFrame. Il peut prendre trois valeurs : yes, no ou auto. yes force l'apparition des barres de défilement, no les empêche et auto permet aux barres de défilement d'apparaître uniquement lorsque cela est nécessaire. Par exemple : empêchera les barres de défilement d'apparaître même si le contenu est plus grand que l'iFrame.
- bac à sable. Cet attribut puissant permet d'appliquer un ensemble de restrictions supplémentaires sur le contenu de l'iFrame afin d'améliorer la sécurité. Il peut être utilisé pour désactiver les scripts, empêcher l'envoi de formulaires, bloquer l'utilisation de plugins et restreindre d'autres comportements potentiellement risqués. La valeur de cet attribut peut être une liste de restrictions séparées par des espaces, telles que allow-scripts, allow-forms, allow-same-origin, etc. Par exemple, permettrait aux scripts de s'exécuter dans l'iFrame mais avec d'autres restrictions en place.
- Autoriser. L'attribut allow spécifie une politique de fonctionnalités pour le contenu de l'iFrame. Cela contrôle les autorisations pour des éléments tels que l'accès à la caméra, la géolocalisation, le mode plein écran, etc. C'est un moyen d'accorder ou de refuser explicitement certaines fonctionnalités du navigateur au contenu à l'intérieur de l'iFrame. Par exemple, permet au contenu d'accéder à la géolocalisation uniquement pour la même origine et désactive complètement l'accès à la caméra.
- nom. Cet attribut attribue un nom à l'iFrame, ce qui peut être utile pour le cibler avec des liens ou des scripts. Par exemple, un lien avec target="iframe_name" ouvrira le contenu lié dans l'iFrame nommé. Ceci est particulièrement utile dans les situations où plusieurs iFrames existent sur une page.
- srcdoc. Cet attribut vous permet d'intégrer directement du contenu HTML dans l'iFrame au lieu de le charger à partir d'une source externe. Il est utile pour intégrer de petits éléments de contenu HTML sans avoir besoin d'un fichier séparé. Par exemple, Hello, world!"> afficherait « Bonjour, monde ! » à l'intérieur de l'iFrame.
- politique de référencement. Cet attribut contrôle la quantité d'informations de référence qui doivent être envoyées lors de la récupération de l'URL source. Il permet de gérer les problèmes de confidentialité et de sécurité liés aux données de référence. Les valeurs peuvent être no-referrer, origin, strict-origin, etc., qui déterminent la quantité d'URL de la page d'origine partagée avec le contenu intégré.
- chargement. L'attribut loading spécifie si l'iFrame doit être chargé immédiatement ou différé. Les valeurs peuvent être impatientes, ce qui charge l'iFrame dès que possible, ou paresseuses, ce qui diffère le chargement jusqu'à ce que l'iFrame soit proche de la fenêtre d'affichage, améliorant ainsi les performances et l'expérience utilisateur en réduisant le temps de chargement initial.
- politique de référencement. Cet attribut définit la politique de référencement pour les requêtes effectuées par l'iframe, ce qui affecte la quantité d'informations sur la page de référence envoyées au contenu de l'iframe. Les options incluent no-referrer, origin, same-origin et strict-origin.
- csp. L'attribut csp (content security policy) permet au développeur de spécifier une politique de sécurité de contenu spécifique au contenu de l'iFrame. Cela permet d'appliquer certaines mesures de sécurité, comme les sources de contenu autorisées à être chargées, ce qui peut empêcher certains types d'attaques comme les scripts intersites (XSS).
À quoi servent les iFrames ?
Les iFrames sont utilisés à diverses fins dans le développement Web, principalement pour intégrer du contenu externe dans une page Web tout en conservant un contexte distinct pour ce contenu. Voici quelques cas d'utilisation courants :
- Intégration de vidéos. Les iFrames sont largement utilisés pour intégrer des vidéos provenant de plateformes telles que YouTube, Vimeo ou d'autres services d'hébergement vidéo. Cela permet aux utilisateurs de regarder des vidéos directement sur un site Web sans quitter la page. Le lecteur vidéo intégré, avec ses commandes, est chargé dans l'iFrame.
- Intégration de cartes. Les iFrames sont souvent utilisés pour intégrer des cartes interactives à partir de services tels que Google Maps ou OpenStreetMap. Cela permet aux utilisateurs de visualiser et d'interagir avec des cartes directement sur la page Web, ce qui est particulièrement utile pour afficher des emplacements, des itinéraires et d'autres données géographiques.
- Affichage de pages Web ou de documents externes. Les iFrames permettent d'inclure des pages Web entières ou des documents provenant d'autres sites Web. Ils sont généralement utilisés pour afficher du contenu tel que des conditions de service, des politiques de confidentialité ou d'autres documents externes sans obliger les utilisateurs à quitter le site actuel.
- Chargement de widgets et de plugins tiers. De nombreux services tiers, tels que les plateformes de médias sociaux, les outils de chat d'assistance client et les réseaux publicitaires, fournissent des widgets qui peuvent être intégrés à l'aide d'iFrames. Cela permet aux sites Web d'intégrer des fonctionnalités telles que les commentaires Facebook, les flux X ou l'assistance par chat en direct sans nécessiter de ressources importantes. développement backend.
- Hébergement de publicités. Les iFrames sont couramment utilisés pour intégrer des publicités sur des pages Web. Les réseaux publicitaires fournissent souvent des balises publicitaires basées sur des iFrames, qui permettent d'isoler le contenu de la publicité du reste de la page afin d'éviter les conflits entre le code de la publicité et celui de la page.
- Isoler le contenu pour des raisons de sécurité. Les iFrames peuvent être utilisés pour intégrer du contenu provenant de sources externes tout en le gardant isolé des scripts et des styles de la page parent. Cela est particulièrement utile pour maintenir les limites de sécurité, car cela empêche le contenu potentiellement dangereux d'affecter la page principale.
- Tester et prévisualiser le contenu. Les développeurs utilisent souvent des iFrames pour tester ou prévisualiser le contenu d'un environnement de développement sur un site en ligne. Cela permet une comparaison et des tests faciles sans intégrer complètement le contenu au site.
- Affichage de contenu réactif. Les iFrames peuvent être utilisés pour afficher du contenu réactif qui s'adapte à différentes tailles d'écran, comme des pages Web ou des applications réactives. Cela est utile pour garantir que le contenu intégré est accessible et visuellement cohérent sur tous les appareils.
- Intégration de formulaires et d'outils interactifs. Les iFrames sont utilisés pour intégrer des formulaires, des enquêtes, des calculatrices et d'autres outils interactifs provenant de sources externes. Cela permet aux sites Web d'offrir des fonctionnalités complexes sans avoir à développer ces outils à partir de zéro.
- Intégration inter-domaines. Lorsque le contenu doit être intégré à partir d'un domaine différent, les iFrames fournissent une méthode pour le faire tout en maintenant la séparation des contextes d'origine. Ceci est particulièrement utile pour le contenu hébergé sur un autre domaine server ou domaine, permettant une gestion et un déploiement plus faciles.
Exemples d'iFrame
Voici deux exemples d’iFrames en cours d’utilisation.
Exemple 1 : Intégration d'une vidéo YouTube
Cet exemple montre comment intégrer une vidéo YouTube dans une page Web à l'aide d'un iFrame.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>iFrame YouTube Example</title>
</head>
<body>
<h1>Watch this Video:</h1>
<iframe width="560" height="315" src="https://www.youtube.com/embed/dQw4w9WgXcQ"
title="YouTube video player" frameborder="0" allow="accelerometer; autoplay;
clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen>
</iframe>
</body>
</html>
Explication:
- L'attribut src est défini sur l'URL de la vidéo YouTube. Dans ce cas, il s'agit d'un exemple de vidéo.
- Les attributs de largeur et de hauteur définissent la taille du lecteur vidéo.
- L'attribut allow spécifie les autorisations pour des fonctionnalités telles que la lecture automatique, crypté médias et plein écran.
- L'attribut allowfullscreen permet de visualiser la vidéo en mode plein écran.
Exemple 2 : Intégration d'une carte Google
Cet exemple montre comment intégrer une carte Google dans une page Web à l'aide d'un iFrame.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>iFrame Google Map Example</title>
</head>
<body>
<h1>Our Location:</h1>
<iframe src="https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3151.8354345096274!
2d144.95373631531565!3d-37.81720997975142!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!
1s0x6ad65d43f1a5d53b%3A0x1aaf3d5a5b64db5e!2sFederation%20Square!5e0!3m2!1sen!2sau!4v1617174192722!5m2!
1sen!2sau"
width="600" height="450" style="border:0;" allowfullscreen="" loading="lazy"></iframe>
</body>
</html>
Explication:
- L'attribut src contient l'URL fournie par Google Maps pour l'intégration de la carte. L'URL comprend des paramètres spécifiques qui déterminent l'emplacement et les paramètres d'affichage.
- Les attributs de largeur et de hauteur définissent la taille de la carte sur la page Web.
- La partie style="border:0;" supprime toutes les bordures autour de la carte.
- L'attribut allowfullscreen permet aux utilisateurs d'afficher la carte en mode plein écran.
- L'attribut loading="lazy" diffère le chargement de la carte jusqu'à ce qu'elle soit proche de la fenêtre d'affichage, améliorant ainsi les performances de chargement de la page.
Comment utiliser les iFrames ?
Les passages suivants expliquent comment utiliser les iFrames pour tirer le meilleur parti de votre expérience utilisateur.
Intégrer du contenu externe
Pour intégrer du contenu externe dans une page Web, les développeurs utilisent généralement le Élément HTML qui leur permet d'intégrer des ressources telles que des vidéos, des cartes ou des pages Web entières provenant d'autres domaines directement dans leur site. Le processus consiste à spécifier la source du contenu via l'attribut src dans le balise qui pointe vers l'URL du contenu externe. Des attributs supplémentaires tels que width, height et allow peuvent être utilisés pour contrôler l'apparence et le comportement du contenu intégré, garantissant ainsi qu'il s'intègre parfaitement dans la conception de la page.
En intégrant du contenu externe de cette manière, les développeurs améliorent la fonctionnalité et l’interactivité de leurs pages Web, offrant aux utilisateurs une expérience plus riche sans leur demander de quitter le site.
Charger le contenu de manière dynamique
Le chargement dynamique de contenu dans un iFrame implique de modifier la source (src) de l'iFrame en réponse aux interactions de l'utilisateur ou à d'autres déclencheurs, tels que des boutons ou des liens. Cela peut être réalisé en utilisant JavaScript, où vous pouvez manipuler l'attribut src de l'iFrame pour charger un nouveau contenu sans recharger la page complète.
Par exemple, lorsqu'un utilisateur clique sur un bouton, une fonction JavaScript peut être exécutée pour mettre à jour l'attribut src de l'iFrame, ce qui lui permet de récupérer et d'afficher un nouveau document HTML ou une nouvelle ressource Web. Cette approche est particulièrement utile pour créer des sites Web dynamiques. applications où différents contenus doivent être affichés dans la même zone de la page en fonction des actions de l'utilisateur, améliorant l'expérience utilisateur en fournissant des transitions transparentes entre différents éléments de contenu.
De plus, en exploitant l'historique.pushState API en combinaison avec le contenu iFrame dynamique, il est possible de conserver l'historique du navigateur, permettant aux utilisateurs de naviguer dans les deux sens à travers le contenu chargé dynamiquement comme s'il s'agissait de chargements de pages traditionnels.
Créer des cadres en ligne
La création de cadres en ligne, communément appelés iFrames, implique l'utilisation de Élément HTML permettant d'intégrer du contenu externe directement dans une page Web. Cet élément est polyvalent et permet aux développeurs d'insérer n'importe quoi, des vidéos et des cartes aux pages Web entières ou aux widgets interactifs dans le contenu existant. En spécifiant l'attribut src, vous définissez l'URL du contenu à intégrer, tandis que d'autres attributs tels que la largeur, la hauteur et la bordure du cadre contrôlent l'apparence et le comportement de l'iFrame.
Les iFrames sont particulièrement utiles pour intégrer de manière transparente du contenu tiers, permettant aux utilisateurs d'interagir avec des ressources externes sans quitter le site principal. Grâce à des attributs supplémentaires tels que sandbox et allow, les développeurs peuvent affiner la sécurité et les fonctionnalités, garantissant ainsi que le contenu intégré se comporte comme prévu tout en préservant l'intégrité et les performances globales du site Web.
Bonnes pratiques pour les iFrames
Lors de l'utilisation d'iFrames dans le développement Web, il est essentiel de suivre les bonnes pratiques pour garantir leur bon fonctionnement, maintenir la sécurité et offrir une bonne expérience utilisateur. Voici quelques bonnes pratiques pour l'utilisation des iFrames :
- Utilisez l'attribut sandbox pour la sécurité. L'attribut sandbox améliore la sécurité en appliquant des restrictions sur le contenu de l'iFrame. Par défaut, les iFrames peuvent introduire des risques de sécurité tels que les scripts intersites (XSS). L'utilisation de sandbox limite les actions que le contenu intégré peut effectuer, telles que l'exécution de scripts, l'envoi de formulaires ou l'accès au stockage du navigateur. Vous pouvez également autoriser de manière sélective certaines fonctionnalités telles que les scripts ou les formulaires en spécifiant des valeurs d'autorisation supplémentaires.
<iframe src="https://example.com" sandbox="allow-scripts"></iframe>
- Spécifiez un attribut de titre pour l'accessibilité. L'ajout d'un attribut de titre descriptif à votre iFrame améliore l'accessibilité, en particulier pour les utilisateurs qui utilisent des lecteurs d'écran. L'attribut titre fournit une brève description du contenu, aidant les utilisateurs à comprendre le contenu intégré.
<iframe src="https://example.com" title="Interactive map of our location"></iframe>
- Assurer une conception réactive. Les iFrames peuvent parfois perturber la réactivité d'une page Web, en particulier sur les petits écrans. Pour garantir que le contenu de l'iFrame s'adapte correctement à différents appareils, utilisez CSS pour rendre l'iFrame réactif. Vous pouvez y parvenir en définissant la largeur et la hauteur sur des pourcentages ou en utilisant des unités de fenêtre d'affichage, combinées à des contraintes de largeur maximale et de hauteur maximale.
iframe {
width: 100%;
height: auto;
max-width: 600px;
max-height: 400px;
}
- Évitez d’abuser des iFrames. Bien que les iFrames soient utiles, leur utilisation excessive entraîne des temps de chargement de page plus lents, des risques de sécurité et une expérience utilisateur médiocre. Dans la mesure du possible, envisagez des méthodes alternatives telles que l'utilisation d'API ou l'intégration de contenu directement dans la page au lieu de vous fier à plusieurs iFrames.
- Définir une politique de référencement. L'attribut referrerpolicy contrôle la quantité d'informations de référence envoyées lors du chargement du contenu iFrame. Cela peut aider à protéger la confidentialité des utilisateurs et à empêcher le partage d'informations sensibles avec le contenu intégré. Les valeurs courantes incluent no-referrer, origin ou strict-origin-when-cross-origin.
<iframe src="https://example.com" referrerpolicy="no-referrer"></iframe>
- Utilisez l'attribut de chargement pour améliorer les performances. L'attribut de chargement permet d'optimiser les performances de la page en différant le chargement des iFrames hors écran jusqu'à ce qu'ils soient nécessaires (c'est-à-dire lorsqu'ils sont proches de la fenêtre d'affichage). La valeur lazy retarde le chargement, tandis que la valeur impatiente charge l'iFrame immédiatement.
<iframe src="https://example.com" loading="lazy"></iframe>
- Définissez les autorisations appropriées. L'attribut allow spécifie les fonctionnalités que le contenu iFrame est autorisé à utiliser, telles que la géolocalisation, l'accès à la caméra ou la lecture automatique. La définition d'autorisations précises limite les capacités du contenu intégré, améliorant ainsi la sécurité et la confidentialité des utilisateurs.
<iframe src="https://example.com" allow="geolocation; microphone; camera"></iframe>
- Envisagez des politiques inter-origines. Les iFrames qui chargent du contenu provenant de différents domaines peuvent présenter des problèmes de sécurité. Implémentez des politiques de partage de ressources inter-origines (CORS) sur le server hébergez le contenu iFrame et utilisez les options X-Frame ou les en-têtes Content-Security-Policy (CSP) pour contrôler les sites qui peuvent intégrer votre contenu dans un iFrame. Cela permet d'éviter le détournement de clic et d'autres failles de sécurité.
- Fournir un contenu de secours. Si l'iFrame ne parvient pas à se charger ou est bloqué, pensez à fournir un contenu de secours dans le balise. Ce contenu sera affiché si l'iFrame ne peut pas se charger, offrant une meilleure expérience utilisateur.
<iframe src="https://example.com">
<p>Your browser does not support iFrames. Please visit <a href="https://example.com">this link</a> instead.</p>
</iframe>
Surveiller l’impact sur les performances. Les iFrames peuvent ralentir les performances des pages, en particulier si elles contiennent du contenu lourd comme des vidéos ou des éléments interactifs. Surveillez régulièrement l'impact des iFrames sur le temps de chargement de votre page et optimisez ou chargez en différé les iFrames qui ne sont pas immédiatement visibles pour l'utilisateur.