--- title: slug: Web/HTML/Element/iframe tags: - Contenu - Element - HTML - Reference - Web translation_of: Web/HTML/Element/iframe --- {{HTMLRef}} L'élément HTML <iframe> représente un contexte de navigation imbriqué qui permet en fait d'obtenir une page HTML intégrée dans la page courante. Le contexte de navigation qui contient le contenu intégré est appelé « contexte de navigation parent ». Le contexte de navigation le plus élevé (qui n'a pas de contexte parent) correspond généralement à la fenêtre du navigateur (cf. {{domxref("Window")}}). {{EmbedInteractiveExample("pages/tabbed/iframe.html", "tabbed-standard")}} Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request ! Chaque contexte de navigation possède son propre historique et son propre document actif. Chaque contexte de navigation créé par un élément <iframe> représente un document à part entière et cela peut donc augmenter les ressources nécessaires à l'utilisation de la page. Aussi bien qu'en théorie on puisse ajouter autant d'iframes que possible sur autant de niveaux d'imbrication que voulus, on gardera à l'esprit que cela peut nuire aux performances. Attributs Cet élément prend en charge les attributs universels. {{htmlattrdef("allow")}} L'attribut allow permet de définir une politique de fonctionnalité pour l'iframe. {{htmlattrdef("allowfullscreen")}} Cet attribut, lorsqu'il vaut true(vrai) indique que l'iframe intégré peut être passé en plein écran via la méthode{{domxref("Element.requestFullscreen()")}}. Cet attribut est considéré comme historique et a été redéfini avec allow="fullscreen". {{htmlattrdef("allowpaymentrequest")}} Cet attribut, lorsqu'il vaut true, permet à l'iframe intégré d'appeler l'API Payment Request. Cet attribut est considéré comme historique et a été redéfini avec allow="payment". {{htmlattrdef("csp")}}{{experimental_inline}} L'attribut csp définit la politique de sécurité du contenu que le document intégré doit respecter. {{htmlattrdef("height")}} Cet attribut définit la hauteur du cadre en pixels CSS ({{HTMLVersionInline(5)}}). En {{HTMLVersionInline(4.01)}}, elle peut être exprimée en pixels ou en pourcentages. {{htmlattrdef("importance")}} {{experimental_inline}} Cet attribut indique l'importance de la ressource. La priorité est indiquée au navigateur à l'aide d'une des valeurs suivantes : auto Cette valeur indique l'absence de préférence. Le navigateur pourra utiliser sa propre heuristique afin de décider de la priorité de la ressource. C'est la valeur par défaut. high Cette valeur indique au navigateur que la ressource a une priorité haute. low Cette valeur indique au navigateur que la ressource a une priorité basse. {{htmlattrdef("name")}} Un nom pour le contexte de navigation (ou la frame). Ce nom peut être utilisé comme la valeur de l'attribut target (cible) d'un élément {{HTMLElement("a")}} ou {{HTMLElement("form")}} (formulaire) ou comme valeur de l'attribut formtarget d'un élément {{HTMLElement("input")}} (entrée) ou {{HTMLElement("button")}} (bouton). Il peut également être utilisé comme valeur pour le paramètre windowName de la méthode {{domxref("Window.open()","window.open()")}}. {{htmlattrdef("referrerpolicy")}} Une chaîne de caractères qui indique le référent (referrer) à utiliser lors de la récupération de la ressource : no-referrer signifie que l'en-tête {{HTTPHeader("Referer")}} ne sera pas envoyé. no-referrer-when-downgrade signifie qu'aucune en-tête Referrer ne sera envoyé lorsqu'on navigue vers une origine qui n'utilise pas TLS (HTTPS). C'est le comportement par défaut de l'agent utilisateur. origin signifie que le référent sera l'origine de la page (c'est-à-dire son schéma, son hôte et le port utilisé). origin-when-cross-origin signifie que les navigations vers d'autres origines seront limitées aux schémas, hôtes et ports. Les navigations sur la même origine inclueront le chemin explicite du référent. same-origin un référent sera envoyé pour les origines du même site mais les requêtes multi-origines ne contiendront pas d'informations de référent. strict-origin seule l'origine du document est envoyée comme référent lorsque le protocole de sécurité est le même (HTTPS→HTTPS). L'origine n'est pas envoyée lorsque la destination est moins sécurisée (HTTPS→HTTP). strict-origin-when-cross-origin : l'URL complète est envoyée pour les requêtes de même origine, seule l'origine est envoyée lorsque le protocole de sécurité est le même (HTTPS→HTTPS) et aucun en-tête n'est envoyé pour une destination moins sécurisée (HTTPS→HTTP). unsafe-url signifie que le référent incluera l'origine et le chemin (mais pas le fragment, le mot de passe ou le nom utilisateur). Cette valeur n'est pas sûre car elle peut entraîner des fuites d'origine ou de chemin provenant de ressources sécurisées avec TLS vers des origines insécures. {{htmlattrdef("sandbox")}} Cet attribut permet d'appliquer des restrictions sur le contenu qui peut apparaître dans l'iframe. Si cet attribut vaut la chaîne de caractères vide, toutes les restrictions sont appliquées, sinon, on peut utiliser une liste de mots-clés séparés par des espaces pour définir des restrictions précises. Les mots-clés qui peuvent être utilisés sont : allow-downloads-without-user-activation {{experimental_inline}} : permet aux téléchargements d'avoir lieu sans un signe de l'utilisateur. allow-forms : le contexte de navigation intégré peut envoyer des formulaires. Si ce mot-clé n'est pas utilisé, cette opération n'est pas autorisée. allow-modals : le contexte de navigation peut ouvrir des fenêtres modales. allow-orientation-lock : le contexte de navigation peut désactiver le verrouillage de l'orientation de l'écran. allow-pointer-lock : le contexte de navigation peut utliser l'API Pointer Lock. allow-popups : le contexte de navigation peut déclencher des fenêtres contextuelles (par exemple avec window.open, target="_blank", showModalDialog). Si ce mot-clé n'est pas utilisé, la fonctionnalité échouera sans message d'erreur. allow-popups-to-escape-sandbox : ce mot-clé permet à un document isolé dans un bac à sable (sandboxed) d'ouvrir de nouvelles fenêtres sans avoir à forcer la mise en bac à sable pour ces fenêtres. Cela permettra par exemple à une publicité tierce d'être correctement mise dans un bac à sable sans appliquer les mêmes restrictions sur la page initiale. allow-presentation : ce mot-clé permet à un iframe de démarrer une session de présentation. allow-same-origin : ce mot-clé permet au document isolé de supporter les tests de {{Glossary("same-origin policy")}} en désactivant le remplacement de l'origine de l'iframe par une origine unique. allow-scripts : le contexte de navigation peut exécuter des scripts (mais ne peut pas créer de fenêtres contextuelles). Si ce mot-clé n'est pas utilisé, cette opération n'est pas autorisée. allow-storage-access-by-user-activation {{experimental_inline}} : ce mot-clé permet au contexte de navigation embarqué de demander l'accès aux fonctionnalités de stockage du document parent (ex. ses cookies, le stockage web) grâce à l'API Storage Access. allow-top-navigation : le contexte de navigation peut charger du contenu depuis le contexte de navigation de plus haut niveau. Si ce mot-clé est absent, cette opération n'est pas autorisée. allow-top-navigation-by-user-activation : le contexte de navigation peut charger du contenu depuis le contexte de plus haut niveau uniquement si l'action provient de l'utilisateur. Si ce mot-clé est absent, cette opération n'est pas autorisée. Notes : Lorsque le document intégré possède la même origine que la page principale, il est fortement déconseillé d'employer allow-scripts et allow-same-origin simultanément car cela permet de retirer l'attribut sandboxpar programme. Bien que ce soit accepté, ce cas de figure n'est pas plus sûr que de ne pas utiliser l'attribut sandbox. La mise en bac à sable (sandboxing) est d'une aide minime si un attaquant peut faire en sorte qu'un contenu potentiellement hostile soit affiché dans le navigateur de l'utilisateur en dehors d'un iframe sous sandbox. Aussi, il est recommandé de diffuser le contenu depuis un domaine dédié séparé, afin de limiter les éventuels dommages. L'attribut sandbox n'est pas pris en charge par Internet Explorer 9 et les versions antérieures. {{htmlattrdef("src")}} L'URL de la page qu'on souhaite intégrer. On pourra utiliser about:blank pour les pages vides afin de respecter les règles de même origine (Same-Origin Policy). On notera également que retirer l'attribut src d'un élément <iframe> à l'aide d'un script (par exemple avec {{domxref("Element.removeAttribute()")}}) provoquera le chargement de about:blank dans la frame pour Firefox à partir de la version 65, pour les navigateurs basés sur Chromium ainsi que pour Safari. {{htmlattrdef("srcdoc")}} Le contenu de la page qu'on souhaite intégrer dans le contexte de navigation. Cet attribut est généralement utilisé avec l'attribut sandbox. Si le navigateur prend en charge l'attribut srcdoc, ce dernier surchargera le contenu éventuellement défini via l'attribut src. Si un navigateur ne prend pas en charge l'attribut srcdoc, c'est le contenu lié via src qui sera affiché. On notera que si le contenu de l'attribut contient une balise ouvrante <script>, il est nécessaire d'avoir une balise fermante afin que le script soit exécuté, même s'il n'y a aucun contenu après le script. {{htmlattrdef("width")}} Cet attribut indique la largeur de l'iframe en pixels CSS. Par défaut, cet attribut vaut 300. Attributs dépréciés ou obsolètes {{htmlattrdef("align")}} {{deprecated_inline("html4.01")}}, {{obsolete_inline("html5")}} Cet attribut obsolète permettait de définir l'alignement de l'iframe par rapport à son contexte englobant. {{htmlattrdef("frameborder")}} {{obsolete_inline("html5")}} Lorsqu'il vaut 1 (la valeur par défaut), cet attribut indique au navigateur de définir une bordure entre ce cadre et tout autre cadre. Lorsqu'il vaut 0, aucune bordure n'est dessinée. {{htmlattrdef("longdesc")}} {{obsolete_inline("html5")}} Un URI vers une description détaillée du cadre. En raison d'un mauvais usage, cet attribut n'est pas utile pour les navigateurs non-visuels. {{htmlattrdef("marginheight")}} {{obsolete_inline("html5")}} L'espace, exprimé en pixels, entre le contenu du cadre et ses marges haute et basse. {{htmlattrdef("marginwidth")}} {{obsolete_inline("html5")}} L'espace, exprimé en pixels, entre le contenu du cadre et ses marges gauche et droite. {{htmlattrdef("scrolling")}} {{HTMLVersionInline(4)}} uniquement Un attribut à valeur contrainte qui indique si le navigateur doit afficher une barre de défilement (ou tout autre moyen de défilement) pour le cadre : auto : la barre de défilement est uniquement affichée lorsque c'est nécessaire. yes : la barre de défilement est toujours affichée. no : aucune barre de défilement n'est affichée. Attributs non-standard {{non-standard_inline}} {{htmlattrdef("mozbrowser")}} {{non-standard_inline}} Cet attribut est uniquement disponible pour les WebExtensions. L'iframe se comporte comme une fenêtre de navigateur de plus haut niveau. Voir {{bug(1318532)}} quant à l'exposition de cet attribut dans Firefox. iframe et scripts Les iframes, tels que les {{HTMLElement("frame")}}, font partie du pseudo-tableau {{domxref("window.frames")}}. En utilisant l'élément iframe du DOM, les scripts peuvent accéder à l'objet {{domxref("window")}} de la page HTML incluse par la propriété contentWindow. La propriété contentDocument fait référence au document contenu dans l'iframe (l'équivalent de contentWindow.document) mais n'est pas prise en charge par Internet Explorer avant IE8. Depuis l'iframe, un script peut obtenir une référence à la fenêtre parente via la propriété {{domxref("window.parent")}}. Les scripts qui tentent d'accéder au contenu de l'iframe doivent respecter les règles de même origine et ne peuvent pas accéder à la plupart des propriétés d'une autre fenêtre s'ils ont été chargés depuis un domaine différent. Cela s'applique également aux scripts d'un iframe qui souhaitent accéder au contexte englobant. On peut toutefois communiquer entre différents domaines grâce à la méthode {{domxref("Window.postMessage()")}}. Positionnement et redimensionnement En tant qu'élément remplacé, la position, l'alignement et le redimensionnement du document embarqué via <iframe> peuvent être ajustés via les propriétés {{cssxref("object-position")}} et {{cssxref("object-fit")}}. Exemples Un <iframe> simple Voici un exemple simple où, lorsque l'utilisateur clique sur le bouton, le titre est affiché dans une fenêtre contextuelle. HTML <iframe title="exemple 1 avec iframe" src="https://mdn-samples.mozilla.org/snippets/html/iframe-simple-contents.html" width="400" height="300"> </iframe> Résultat {{EmbedLiveSample('Une_<iframe>_simple', 640, 400)}} Ouvrir un lien dans un <iframe> dans un autre onglet Dans cet exemple, une carte Google est affichée dans un cadre. HTML <base target="_blank"> <iframe id="Example2" title="Example2" width="400" height="300" style="border: none" src="https://maps.google.com/maps?f=q&source=s_q&hl=es-419&geocode=&q=buenos+aires&sll=37.0625,-95.677068&sspn=38.638819,80.859375&t=h&ie=UTF8&hq=&hnear=Buenos+Aires,+Argentina&z=11&ll=-34.603723,-58.381593&output=embed"> </iframe> Résultat {{EmbedLiveSample("Ouvrir_un_lien_d'une_<iframe>_dans_un_onglet", 640, 400)}} Exemple réel Accessibilité Les personnes qui utilisent des outils d'assistance tels que des lecteurs d'écran peut utiliser l'attribut {{HTMLattrxref("title")}} pour obtenir la description du contenu embarqué par l'iframe. La valeur du titre doit décrire, de façon claire et concise, le contenu embarqué. <iframe title="La page Wikipédia consacrée à Robert Louis Stevenson" src="https://fr.wikipedia.org/wiki/Robert_Louis_Stevenson"></iframe> Sans cette description, les utilisateurs peuvent devoir naviguer à l'intérieur de l'iframe et parcourir le contenu afin de comprendre de quoi il s'agit. Le changement de contexte peut être source de confusion et demander un temps de réflexion, notamment pour les pages qui contiennent plusieurs iframe et/ou du contenu interactif tel que des vidéos ou de la musique. Résumé technique Catégories de contenu Contenu de flux, contenu phrasé, contenu intégré, contenu interactif, contenu tangible. Contenu autorisé Le contenu alternatif, qui sera affiché par les navigateurs qui ne prennent pas en charge cet élément. Omission de balise {{no_tag_omission}} Parents autorisés Tout élément qui accepte du contenu intégré. Rôles ARIA autorisés {{ARIARole("application")}}, {{ARIARole("document")}}, {{ARIARole("img")}} Interface DOM {{domxref("HTMLIFrameElement")}} Spécifications Spécification État Commentaires {{SpecName('Referrer Policy', '#referrer-policy-delivery-referrer-attribute', 'referrerpolicy attribute')}} {{Spec2('Referrer Policy')}} Ajout de l'attribut referrerpolicy. {{SpecName('HTML WHATWG', 'iframe-embed-object.html#the-iframe-element', '<iframe>')}} {{Spec2('HTML WHATWG')}} {{SpecName('HTML5 W3C', 'embedded-content-0.html#the-iframe-element', '<iframe>')}} {{Spec2('HTML5 W3C')}} {{SpecName('HTML4.01', 'present/frames.html#h-16.5', '<iframe>')}} {{Spec2('HTML4.01')}} {{SpecName('Screen Orientation')}} {{Spec2('Screen Orientation')}} Ajout du mot-clé allow-orientation-lock pour l'attribut sandbox. {{SpecName('Presentation','#sandboxing-and-the-allow-presentation-keyword','allow-presentation')}} {{Spec2('Presentation')}} Ajout du mot-clé allow-presentation pour l'attribut sandbox. Compatibilité des navigateurs Ce tableau de compatibilité a été généré à partir de données structurées. Si vous souhaitez contribuer à ces données, n'hésitez pas à envoyer une pull request sur https://github.com/mdn/browser-compat-data. {{Compat("html.elements.iframe",3)}}
L'élément HTML <iframe> représente un contexte de navigation imbriqué qui permet en fait d'obtenir une page HTML intégrée dans la page courante. Le contexte de navigation qui contient le contenu intégré est appelé « contexte de navigation parent ». Le contexte de navigation le plus élevé (qui n'a pas de contexte parent) correspond généralement à la fenêtre du navigateur (cf. {{domxref("Window")}}).
<iframe>
Le code source de cet exemple interactif est disponible dans un dépôt GitHub. Si vous souhaitez contribuez à ces exemples, n'hésitez pas à cloner https://github.com/mdn/interactive-examples et à envoyer une pull request !
Chaque contexte de navigation possède son propre historique et son propre document actif.
Chaque contexte de navigation créé par un élément <iframe> représente un document à part entière et cela peut donc augmenter les ressources nécessaires à l'utilisation de la page. Aussi bien qu'en théorie on puisse ajouter autant d'iframes que possible sur autant de niveaux d'imbrication que voulus, on gardera à l'esprit que cela peut nuire aux performances.
Cet élément prend en charge les attributs universels.
allow
true
Cet attribut est considéré comme historique et a été redéfini avec allow="fullscreen".
allow="fullscreen"
Cet attribut est considéré comme historique et a été redéfini avec allow="payment".
allow="payment"
csp
auto
high
low
target
formtarget
windowName
no-referrer
no-referrer-when-downgrade
Referrer
origin
origin-when-cross-origin
same-origin
strict-origin
strict-origin-when-cross-origin
unsafe-url
allow-downloads-without-user-activation
allow-forms
allow-modals
allow-orientation-lock
allow-pointer-lock
allow-popups
window.open
target="_blank"
showModalDialog
allow-popups-to-escape-sandbox
allow-presentation
allow-same-origin
allow-scripts
allow-storage-access-by-user-activation
allow-top-navigation
allow-top-navigation-by-user-activation
Notes :
sandbox
about:blank
src
srcdoc
<script>
300
yes
no
Les iframes, tels que les {{HTMLElement("frame")}}, font partie du pseudo-tableau {{domxref("window.frames")}}.
iframes
En utilisant l'élément iframe du DOM, les scripts peuvent accéder à l'objet {{domxref("window")}} de la page HTML incluse par la propriété contentWindow. La propriété contentDocument fait référence au document contenu dans l'iframe (l'équivalent de contentWindow.document) mais n'est pas prise en charge par Internet Explorer avant IE8.
iframe
contentWindow
contentDocument
contentWindow.document
Depuis l'iframe, un script peut obtenir une référence à la fenêtre parente via la propriété {{domxref("window.parent")}}.
Les scripts qui tentent d'accéder au contenu de l'iframe doivent respecter les règles de même origine et ne peuvent pas accéder à la plupart des propriétés d'une autre fenêtre s'ils ont été chargés depuis un domaine différent. Cela s'applique également aux scripts d'un iframe qui souhaitent accéder au contexte englobant. On peut toutefois communiquer entre différents domaines grâce à la méthode {{domxref("Window.postMessage()")}}.
En tant qu'élément remplacé, la position, l'alignement et le redimensionnement du document embarqué via <iframe> peuvent être ajustés via les propriétés {{cssxref("object-position")}} et {{cssxref("object-fit")}}.
Voici un exemple simple où, lorsque l'utilisateur clique sur le bouton, le titre est affiché dans une fenêtre contextuelle.
<iframe title="exemple 1 avec iframe" src="https://mdn-samples.mozilla.org/snippets/html/iframe-simple-contents.html" width="400" height="300"> </iframe>
{{EmbedLiveSample('Une_<iframe>_simple', 640, 400)}}
Dans cet exemple, une carte Google est affichée dans un cadre.
<base target="_blank"> <iframe id="Example2" title="Example2" width="400" height="300" style="border: none" src="https://maps.google.com/maps?f=q&source=s_q&hl=es-419&geocode=&q=buenos+aires&sll=37.0625,-95.677068&sspn=38.638819,80.859375&t=h&ie=UTF8&hq=&hnear=Buenos+Aires,+Argentina&z=11&ll=-34.603723,-58.381593&output=embed"> </iframe>
{{EmbedLiveSample("Ouvrir_un_lien_d'une_<iframe>_dans_un_onglet", 640, 400)}}
Exemple réel
Les personnes qui utilisent des outils d'assistance tels que des lecteurs d'écran peut utiliser l'attribut {{HTMLattrxref("title")}} pour obtenir la description du contenu embarqué par l'iframe. La valeur du titre doit décrire, de façon claire et concise, le contenu embarqué.
<iframe title="La page Wikipédia consacrée à Robert Louis Stevenson" src="https://fr.wikipedia.org/wiki/Robert_Louis_Stevenson"></iframe>
Sans cette description, les utilisateurs peuvent devoir naviguer à l'intérieur de l'iframe et parcourir le contenu afin de comprendre de quoi il s'agit. Le changement de contexte peut être source de confusion et demander un temps de réflexion, notamment pour les pages qui contiennent plusieurs iframe et/ou du contenu interactif tel que des vidéos ou de la musique.
referrerpolicy
{{Compat("html.elements.iframe",3)}}