LogoLogo
Analytics HelperSirdata APISemantic APIA propos de Sirdata
Français
Français
  • Sirdata CMP
  • INSTALLATION
    • Web & Web Mobile
    • AMP
    • Via un Tag Manager
      • Chargement via Google Tag Manager
    • Dans un CMS
      • Chargement dans Shopify
      • Chargement dans Shopify avec l'application
      • Chargement dans Wordpress
      • Chargement dans Joomla
      • Chargement dans Prestashop
      • Chargement dans Magento
      • Chargement dans Drupal
      • Chargement dans Wix
    • Exclusion des systèmes de cache
      • Plugin Autoptimize plour WordPress
      • Plugin Cloudflare pour WordPress
      • Plugin LiteSpeed pour WordPress
      • Plugin NitroPack pour WordPress
      • Plugin SG Optimizer pour WordPress
      • Plugin WP Super Cache pour WordPress
      • Plugin W3 Total Cache pour WordPress
      • Plugin WP Meteor pour Wordpress
      • Plugin WP Rocket pour WordPress
  • STANDARDS DE TRANSMISSION DU CONSENTEMENT
    • Introduction
    • Google Consent Mode
      • Préalable Obligatoire
      • Activation du Google Consent Mode Avancé
        • Via la CMP Sirdata
        • Via Google Tag Manager
      • Activation du Google Consent Mode Basique
        • Via la CMP Sirdata
        • Via Google Tag Manager
      • Vérification du Google Consent Mode V2 sur un site
    • Microsoft UET Consent Mode
    • Microsoft Clarity Consent
  • CMP API
    • Fonctionnement
    • Exemples
    • Support pour les iframes
  • Fonctionnalités avancées
    • Mode passif
    • Définir la langue pour un utilisateur
    • Affichage manuel de la CMP
  • Gestion des scripts
    • Conditionnement d'un script distant hors Tag Manager
    • Conditionnement d'un script distant via un Tag Manager
    • Conditionnement d'un script via Google Tag Manager
    • Conditionnement d'un script local
    • Configuration avancée
    • Exemples
    • Transmission de la TC String
    • Prestations de conditionnement
  • Analytics
    • Exemption
    • AT Internet
    • Google Analytics
  • F.A.Q. CMP
    • Google Consent Mode V2
      • Utilité Google Consent Mode V2
      • Nouveautés Google Consent Mode V2
      • Mode avancé ou mode basique
    • Conditionnement
      • Conditionnement des tags
      • Gestion des cookies
      • Conditionnement des partenaires non membres du TCF
      • Gestion des scripts
      • Sous traiter les conditionnements
      • Identification des cookies
      • Cookies exemptés
      • Consentement pour Captcha
    • Fonctionnement
      • Navigation privée
      • "Refus" et publicités ciblées
      • Mozilla et blocage des pubs
      • Vérification du chargement de la CMP
      • Gestion du consentement selon les pays
      • Taille du script
    • Gestion des partenaires
      • Recherche des partenaires
      • Ajout d'un partenaire
      • Trouver mes partenaires
    • Google
      • Erreurs Google
      • Publicités Google
      • Google PageSpeed
      • Conditionnement de Google Analytics
      • Modules complémentaires Google
      • Perte de statistiques
      • Alerte Google Ads
      • Problème gclid google
    • Intégration
      • ABConsent est-il compatible avec Stape ?
      • Multi-sites
      • Shopify
      • Intégration via GTM
      • Installation de la CMP
      • Intégration du lien « Paramètres cookies »
      • Comment vérifier l’intégration de ma CMP
      • Intégration Utiq
    • Légal
      • Audit de conformité
      • Mécanique de refus
      • TCF V2.2
      • Cookie-wall
      • Site étranger
      • Une CMP, et après ?
      • Contrôle
      • Conformité juridique mondiale
    • Mobile
      • Mobiles, tablettes ...
      • Affichage mobile
    • Paramétrage
      • Fonctionnement des boutons
      • Paramètres cookies
      • Couleur bouton
      • Tests A/B
      • Optimisation du taux de consentement
      • Personnalisation de la CMP
    • Statistiques
      • Accès aux statistiques
      • Volume de hits
    • Stockage
      • Récupérer les preuves de consentement
    • Tarifs
      • Les deux types de licences
      • Que se passe-t-il lorsque j'atteins le palier de mon forfait mensuel ?
      • Proposez-vous une période d'essai ?
      • Quels sont les modes de paiement acceptés
      • Proposez-vous des forfaits pour des volumes de hits très élevés ?
      • Les hits non utilisés sont-ils reportés au mois suivant ?
      • Qu'est-ce qui est considéré comme un hit
      • Puis-je passer d’une licence payante à une licence financée par la collecte de données ?
      • Où puis-je consulter les statistiques de consentement et le volume de Hits de ma CMP ?
    • AMP
      • Consentement sur AMP
      • Bouton CMP sur AMP
    • Gestion du compte
      • Gestion des accès
      • Informations de facturation
      • Ajouter un moyen de paiement
    • Content Security Policy (CSP)
    • Comment identifier les cookies présents sur mon site ?
    • ABConsent est-il compatible avec Addingwell ?
    • ABConsent est-il compatible avec Taggr ?
  • Prestations CMP
    • Configuration CMP
    • Intégration CMP
    • Conditionnement des tags
    • Audit de conformité
    • Extra-Vendorlist
    • Vidéo-Wall
    • Inventaire Partenaires
    • Consulting
  • Liens
    • Configurez votre CMP
    • Analytics Helper
    • Sirdata API
    • Semantic API
    • A propos de Sirdata
Propulsé par GitBook
Sur cette page
  • Envoyer une commande
  • Récupérer le résultat de la commande

Cet article vous a-t-il été utile ?

  1. CMP API

Support pour les iframes

PrécédentExemplesSuivantMode passif

Dernière mise à jour il y a 1 an

Cet article vous a-t-il été utile ?

Les iframes intégrées sur votre site peuvent utiliser les commandes fournies par la . 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.

{
	__tcfapiCall: {
		command: *command*, // name of the command to execute
		version: 2, // version of the TCF specification
		parameter: *parameter*, // parameter to be passed to the command function
		callId: *uniqueId* // unique call ID
	}
}
this.callId = this.callId || 0;
var message = {
	__tcfapiCall: {
		command: 'addEventListener',
		version: 2,
		parameter: null,
		callId: ++this.callId
	}
};
window.top.postMessage(message, '*');

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 , qui est propre à la CMP API.

function processMessage(event) {
	if (event && event.data && event.data.__tcfapiReturn && event.data.__tcfapiReturn.success) {
		console.log(event.data.__tcfapiReturn.returnValue);
	}
}
window.addEventListener('message', processMessage);

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).

{
    __tcfapiReturn: {
        returnValue: *returnValue*, // result of the command
        success: *boolean*, // true if the call to the command was successful
        callId: *uniqueId* // call ID sent in the __tcfapiCall
    }
}
function processMessage(event) {
	if (event && event.data && event.data.__tcfapiReturn && event.data.__tcfapiReturn.success) {
		var tcData = event.data.__tcfapiReturn.returnValue;
		if (!tcData.gdprApplies) {
			console.log("GDPR doesn't apply to user");
		}
		console.log("TC String : ", tcData.tcString);
	}
}
window.addEventListener('message', processMessage);

this.callId = this.callId || 0;
var message = {
	__tcfapiCall: {
		command: 'addEventListener',
		version: 2,
		parameter: null,
		callId: ++this.callId
	}
};
window.top.postMessage(message, '*');

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.

<script>
    !function(){let a=window,c;const o={};for(;a;){try{if(a.frames.__tcfapiLocator){c=a;break}}catch(a){}if(a===window.top)break;a=a.parent}window.__tcfapi=function(a,t,n,e){c?(t={__tcfapiCall:{command:a,parameter:e,version:t,callId:e=Math.random()+""}},o[e]=n,c.postMessage(t,"*")):n({msg:"CMP not found"},!1)},window.addEventListener("message",function(a){let t={};try{t="string"==typeof a.data?JSON.parse(a.data):a.data}catch(a){}var n=t.__tcfapiReturn;n&&"function"==typeof o[n.callId]&&(o[n.callId](n.returnValue,n.success),o[n.callId]=null)},!1)}();
</script>
CMP API
addEventListener