Get to know MDN better
Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.
Expérimental: Il s'agit d'une technologie expérimentale.
Vérifiez attentivement le tableau de compatibilité des navigateurs avant de l'utiliser en production.
Attention : Cette fonctionnalité est actuellement refusée par un éditeur de navigateur. Voir la section Positions des standards ci-dessous pour plus de détails.
L'API Fenced Frame fournit des fonctionnalités pour contrôler le contenu intégré dans les éléments HTML <fencedframe>.
Une source majeure de problèmes de vie privée et de sécurité sur le web est le contenu intégré dans les éléments HTML <iframe>. Historiquement, les <iframe> ont été utilisés pour définir des cookies tiers, qui peuvent servir à partager des informations et à suivre les utilisateur·ice·s entre différents sites. De plus, le contenu intégré dans un <iframe> peut communiquer avec le document qui l'intègre (par exemple, via Window.postMessage()).
Le document parent peut aussi utiliser des scripts pour lire différentes informations depuis le <iframe> : par exemple, il est possible d'obtenir des données de pistage ou d'empreinte numérique en lisant l'URL intégrée via la propriété src, surtout si elle contient des paramètres d'URL. Le <iframe> peut aussi accéder au DOM du contexte parent, et inversement.
La plupart des navigateurs modernes travaillent sur des mécanismes de partitionnement du stockage afin que les cookies ne puissent plus être utilisés pour le pistage (voir par exemple Cookies ayant un état partitionné indépendant (CHIPS) ou Partitionnement d'état de Firefox).
Les éléments <fencedframe> visent à résoudre un autre aspect de ce problème : ils sont très similaires aux <iframe> dans leur forme et leur fonction, à ceci près :
Pour plus d'informations sur le modèle de communication des cadres protégés, consultez le guide Communication avec les cadres intégrés.
Les <fencedframe> sont utilisés par d'autres API pour intégrer différents types de contenus intersites ou collecter des données, répondant à divers cas d'utilisation tout en préservant la vie privée. La plupart de ces usages reposaient auparavant sur des cookies tiers ou d'autres mécanismes peu respectueux de la vie privée.
Comme mentionné plus haut, vous ne contrôlez pas le contenu intégré dans un <fencedframe> directement via un script classique.
Pour définir le contenu affiché dans un <fencedframe>, une API d'utilisation (comme Protected Audience ou Shared Storage) génère un objet FencedFrameConfig, qui est ensuite affecté via JavaScript à la propriété HTMLFencedFrameElement.config du <fencedframe>.
L'exemple suivant récupère un FencedFrameConfig depuis une enchère publicitaire de l'API Protected Audience, qui est ensuite utilisé pour afficher la publicité gagnante dans un <fencedframe> :
Il faut passer resolveToConfig: true à l'appel de runAdAuction() pour obtenir un objet FencedFrameConfig. Si resolveToConfig est à false, la promesse (Promise) résultante renverra un URN opaque (par exemple urn:uuid:c36973b5-e5d9-de59-e4c4-364f137b3c7a) qui ne peut être utilisé que dans un <iframe>.
Dans tous les cas, le navigateur stocke une URL contenant l'emplacement cible du contenu à intégrer — associée à l'URN opaque, ou à la propriété interne url du FencedFrameConfig. La valeur de l'URL ne peut pas être lue par le JavaScript du contexte parent.
Note : La prise en charge des URN opaques dans les <iframe> vise à faciliter la migration des implémentations existantes vers les API du Privacy Sandbox. Ce support est temporaire et sera supprimé à mesure que l'adoption progressera.
Note : FencedFrameConfig possède une méthode setSharedStorageContext() qui permet de transmettre des données du document parent au stockage partagé du <fencedframe>. Cela peut par exemple être utilisé dans un Worklet via le <fencedframe> pour générer un rapport. Voir l'API Shared Storage pour plus de détails.
Dans les documents intégrés dans des <fencedframe>, JavaScript a accès à la propriété Window.fence, qui retourne une instance de Fence pour ce document. Cet objet contient plusieurs fonctions spécifiques à l'API fenced frame. Par exemple, Fence.reportEvent() permet de déclencher l'envoi de données de rapport via un beacon vers une ou plusieurs URL spécifiées, afin de signaler les affichages et clics publicitaires.
Seules certaines fonctionnalités conçues pour être utilisées dans les <fencedframe> peuvent être activées via des politiques d'autorisations définies sur eux ; les autres fonctionnalités contrôlées par politique ne sont pas disponibles dans ce contexte. Voir les Politiques d'autorisations disponibles pour les cadres protégés pour plus de détails.
Un en-tête Sec-Fetch-Dest avec la valeur fencedframe sera envoyé pour toute requête effectuée depuis l'intérieur d'un <fencedframe>, y compris les <iframe> enfants intégrés dans un <fencedframe>.
Le serveur doit définir un en-tête de réponse Supports-Loading-Mode avec la valeur fenced-frame pour tout document destiné à être chargé dans un <fencedframe>, ou un <iframe> intégré dans un <fencedframe>.
Autres effets des cadres protégés sur les en-têtes HTTP :
Les événements beforeunload et unload ne sont pas déclenchés sur les cadres protégés, car ils pourraient faire fuiter des informations sous forme d'horodatage de suppression de page. Les implémentations visent à éliminer autant de fuites potentielles que possible.
Représente la navigation d'un élément HTML <fencedframe>, c'est-à-dire le contenu qui y sera affiché. Un FencedFrameConfig est renvoyé par une source telle que l'API Protected Audience et affecté à la propriété HTMLFencedFrameElement.config.
FenceContient plusieurs fonctions liées à la fonctionnalité de cadre protégé. Disponible uniquement dans les documents intégrés dans un <fencedframe>.
HTMLFencedFrameElementReprésente un élément <fencedframe> en JavaScript et fournit des propriétés pour le configurer.
Remplace des chaînes de caractères spécifiées dans l'URL répertoriée correspondant à un URN opaque donné ou à la propriété interne url d'un FencedFrameConfig.
Window.fenceRetourne une instance d'objet Fence pour le contexte du document courant. Disponible uniquement dans les documents intégrés dans un <fencedframe>.
Certaines fonctionnalités de l'API qui créent des FencedFrameConfig comme Navigator.runAdAuction() (API Protected Audience) et WindowSharedStorage.selectURL() (API Shared Storage), ainsi que d'autres fonctionnalités comme Fence.reportEvent(), nécessitent d'inscrire votre site dans un processus d'inscription au privacy sandbox. Sinon, les appels d'API échoueront avec un avertissement dans la console.
Note : Dans Chrome, vous pouvez tout de même tester votre code fenced frame localement sans inscription. Pour autoriser les tests locaux, activez le drapeau développeur Chrome suivant :
chrome://flags/#privacy-sandbox-enrollment-overrides
Les démonstrations suivantes utilisent toutes des <fencedframe> :
| Fenced Frame # the-fencedframe-element |
Un éditeur de navigateur s'oppose à cette spécification. Positions connues :
Activez JavaScript pour afficher ce tableau de compatibilité des navigateurs.
Cette page a été modifiée le 2 déc. 2025 par les contributeur·ice·s du MDN.
Votre modèle pour un internet meilleur.
Visitez la société mère à but non lucratif de Mozilla Corporation, la Fondation Mozilla.
Certaines parties de ce contenu sont protégées par le droit d'auteur ©1998—2026 des contributeurs individuels de mozilla.org. Contenu disponible sous une licence Creative Commons.