Support pour les iframes
Les iframes intégrées sur votre site peuvent utiliser les commandes fournies par la CMP API.
Pour cela, elles doivent effectuer des appels à la "frame" parente (ou à une frame ancêtre) sur laquelle la CMP est chargée, en envoyant les commandes sous forme de message grâce à la fonction postMessage()
.
La frame vers laquelle effectuer l'appel peut être déterminée par l'ancêtre en cherchant la frame enfant .frames["__tcfapiLocator"]
.
Envoyer une commande
Le message à envoyer doit avoir le format ci-dessous où l'objet __tcfapiCall
contient les informations de la commande à exécuter.
command
et parameter
sont identiques aux paramètres passés à la fonction __tcfapi()
, et callId
est un ID unique à déterminer.
Récupérer le résultat de la commande
Avant d'envoyer des messages, l'iframe doit mettre en place une fonction JavaScript à exécuter lorsqu'un message est renvoyé en retour. Pour cela, elle doit tracer l'évènement message avec la fonction window.addEventListener()
.
De cette façon, elle récupèrera et pourra traiter le résultat de la commande contenu dans __tcfapiReturn
.
La fonction window.addEventListener()
est différente de la commande addEventListener, qui est propre à la CMP API.
Lorsqu'une commande est envoyée, le message renvoyé en retour (event.data) contient l'objet __tcfapiReturn
avec le résultat de la commande.
returnValue
et success
sont identiques aux paramètres passés à la callback de la fonction __tcfapi()
, et callId
correspond à l'ID de l'appel d'origine (__tcfapiCall
).
Vous trouverez ci-dessous un exemple de script qui émule l'API __tcfapi() dans une iframe.
Il localise la trame ancêtre exécutant le CMP, exécute le postMessage et écoute le message de retour et transmet ses valeurs au rappel.
En clair, les scripts de l'iframe fonctionneront comme si la CMP y était chargée directement.
Dernière mise à jour