Bannière
L'API JavaScript
Contrôler la bannière depuis votre code : rouvrir les préférences, lire l'état du consentement, conditionner vos propres scripts et réagir aux décisions via le dataLayer.
Une fois chargée, la bannière expose un objet global window.__cmp sur chaque page. Il permet d'ouvrir la bannière ou le centre de préférences depuis vos propres éléments d'interface et de lire l'état courant du consentement : utile, par exemple, pour un lien « Gérer mes témoins » dans votre pied de page.
Méthodes
| Méthode | Effet |
|---|---|
__cmp.showPreferences() | Ouvre le centre de préférences, où le visiteur modifie ou retire son consentement, et masque l'avis. |
__cmp.showBanner() | Réaffiche l'avis de consentement initial et ferme le centre de préférences. |
__cmp.hideBanner() | Masque l'avis et le centre de préférences. |
<a href="#" onclick="window.__cmp && __cmp.showPreferences && __cmp.showPreferences(); return false;">
Gérer mes témoins
</a>La bannière peut ne pas être encore chargée
window.__cmp existe dès le script d'amorçage, mais les trois méthodes ne sont attachées qu'une fois la bannière affichée, et jamais sous le régime « Aucune bannière ». Testez la présence de la méthode elle-même avant de l'appeler, comme dans l'exemple ci-dessus.
Lire l'état du consentement
L'objet __cmp porte aussi l'état courant, en lecture seule :
| Propriété | Contenu |
|---|---|
__cmp.consent | L'état des catégories non nécessaires, par exemple { functional: false, analytics: true, advertisement: false }. Les catégories nécessaires n'y figurent pas : elles sont toujours actives. |
__cmp.cats | Les clés des catégories non nécessaires configurées pour le site. |
__cmp.ready | true quand la bannière est initialisée. |
__cmp.regime | Le régime appliqué au visiteur selon sa localisation : un objet avec mode (opt-in, opt-out, notice-only ou none), ui, honorGpc, gpcApplied. |
__cmp.gpcApplied | true si un signal Global Privacy Control a été honoré. |
__cmp.debug | Mettez-le à true pour afficher les journaux [cmp] de la bannière dans la console. |
if (window.__cmp && __cmp.ready && __cmp.consent.analytics) {
// le visiteur a accepté la catégorie Analyse
chargerMonModule();
}Conditionner vos propres scripts et contenus
Sans écrire de JavaScript, vous pouvez rattacher un script ou un élément de page à une catégorie directement dans votre HTML :
- Un
<script type="text/plain" data-consent="analytics">n'est exécuté qu'une fois la catégorieanalyticsacceptée (remplacez par la clé de la catégorie voulue). - Tout élément portant
data-consent="advertisement"reste masqué tant que la catégorie n'est pas consentie, grâce à la classecmp-no-<clé>posée sur<html>. - Les iframes bloquées par les motifs d'URL sont remplacées par un bloc
.cmp-placeholder, que vous pouvez styler ; scripts, iframes et images bloqués sont réinjectés dès l'acceptation.
Pour les tags gérés dans Google Tag Manager avec le modèle, voyez plutôt Vos balises avec le modèle GTM.
Le cookie csm_consent
La décision du visiteur est conservée dans un unique cookie de première partie, csm_consent, valable 365 jours, posé avec SameSite=Lax (et Secure en HTTPS) sur le domaine enregistré de votre site : il vaut donc pour vos sous-domaines. Sa valeur est un objet JSON encodé :
| Champ | Signification |
|---|---|
id | L'identifiant de consentement du visiteur (préfixe csm_), celui qui apparaît dans le registre. |
v | L'empreinte de la configuration publiée au moment du choix (la version de politique du registre). |
c | Le détail par catégorie non nécessaire (true / false). |
a | L'action : accept_all, reject_all ou save_preferences. |
t | L'horodatage de la décision (millisecondes depuis l'epoch). |
Réagir aux décisions (dataLayer)
Il n'y a pas d'API d'abonnement par rappel : l'intégration passe par Google Tag Manager. À chaque décision, la bannière pousse la mise à jour Consent Mode dans le dataLayer. Elle y pousse aussi l'événement csm_consent_update quand une catégorie vient d'être accordée, et au chargement de chaque page pour un visiteur dont le choix est déjà enregistré. Un déclencheur d'événement personnalisé sur ce nom lance un tag dès qu'un visiteur consent : c'est ainsi que les tags de l'installation automatique partent sans rechargement.
// 1) la mise à jour Consent Mode, via gtag()
gtag("consent", "update", {
analytics_storage: "granted",
ad_storage: "denied",
ad_user_data: "denied",
ad_personalization: "denied",
/* … tous les signaux Consent Mode v2 */
});
// 2) puis, si une catégorie vient d'être accordée
window.dataLayer.push({ event: "csm_consent_update" });