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.
Format __tcfapiCall
Exemple
1
{
2
__tcfapiCall: {
3
command: *command*, // name of the command to execute
4
version: 2, // version of the TCF specification
5
parameter: *parameter*, // parameter to be passed to the command function
6
callId: *uniqueId* // unique call ID
7
}
8
}
Copied!
1
this.callId = this.callId || 0;
2
var message = {
3
__tcfapiCall: {
4
command: 'getTCData',
5
version: 2,
6
parameter: [1,2,53],
7
callId: ++this.callId
8
}
9
};
10
window.top.postMessage(message, '*');
Copied!

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.
Exemple
1
function processMessage(event) {
2
if (event && event.data && event.data.__tcfapiReturn && event.data.__tcfapiReturn.success) {
3
console.log(event.data.__tcfapiReturn.returnValue);
4
}
5
}
6
window.addEventListener('message', processMessage);
Copied!
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).
Format __tcfapiReturn
Exemple
1
{
2
__tcfapiReturn: {
3
returnValue: *returnValue*, // result of the command
4
success: *boolean*, // true if the call to the command was successful
5
callId: *uniqueId* // call ID sent in the __tcfapiCall
6
}
7
}
Copied!
1
function processMessage(event) {
2
if (event && event.data && event.data.__tcfapiReturn && event.data.__tcfapiReturn.success) {
3
var tcData = event.data.__tcfapiReturn.returnValue;
4
if (!tcData.gdprApplies) {
5
console.log("GDPR doesn't apply to user");
6
}
7
console.log("TC String : ", tcData.tcString);
8
}
9
}
10
window.addEventListener('message', processMessage);
11
12
this.callId = this.callId || 0;
13
var message = {
14
__tcfapiCall: {
15
command: 'getTCData',
16
version: 2,
17
parameter: [1, 2, 53],
18
callId: ++this.callId
19
}
20
};
21
window.top.postMessage(message, '*');
Copied!
Dernière mise à jour 6mo ago