API JavaScript
La plupart des sites n’ont jamais besoin de cette page. Lisez-la quand votre propre code doit savoir ce qu’un visiteur a autorisé, ou quand vous voulez vos propres boutons et liens.
Pour commencer : attendre l’état
La ligne Cookiemark figure en premier dans votre head et s’exécute immédiatement : window.Cookiemark existe donc pour tous les scripts placés en dessous. Le choix du visiteur est connu un peu plus tard, une fois la page lue. Utilisez l’événement ready pour connaître l’état au chargement de la page, et change pour suivre ce qui se passe ensuite.
Cookiemark.on('ready', function (detail) {
if (detail.consent.statistics) {
startMyAnalytics();
}
});
Cookiemark.on('change', function (detail) {
if (detail.consent.marketing) {
loadChatWidget();
}
});Avant votre première publication, le script ne contient rien et window.Cookiemark n’existe pas. Vérifiez sa présence avant de l’appeler, pour que votre code fonctionne aussi sur un site encore à l’état de brouillon.
Une fonction ajoutée avec on('ready') après que l’état est connu s’exécute immédiatement. Les autres événements ne sont pas répétés pour les écouteurs ajoutés tardivement. Ensemble, ready et change ne manquent jamais rien.
Chaque événement est aussi émis sur window sous forme de CustomEvent avec le préfixe cookiemark:. Les données se trouvent dans event.detail.
window.addEventListener('cookiemark:change', function (event) {
console.log(event.detail.action, event.detail.consent);
});Propriétés
Toutes les propriétés sont en lecture seule et reflètent toujours l’état actuel.
| Propriété | Valeur |
|---|---|
Cookiemark.consent | Un objet avec necessary, preferences, statistics et marketing, chacun à true ou false. necessary vaut toujours true. |
Cookiemark.hasResponse | True quand le visiteur a fait un choix toujours valide. |
Cookiemark.consented | True quand au moins une catégorie facultative est autorisée. |
Cookiemark.declined | True quand aucune catégorie facultative n’est autorisée. |
Cookiemark.consentId | L’ID aléatoire du consentement de ce visiteur, comme dans le journal des consentements. Vide tant qu’il n’a pas fait de choix. |
Cookiemark.consentTime | Le moment où le choix enregistré a été fait, en millisecondes depuis 1970. Zéro sans choix. |
declined vaut aussi true pour un nouveau visiteur qui n’a pas encore répondu, puisque rien n’est autorisé à ce stade. Vérifiez aussi hasResponse si vous avez besoin de savoir que le visiteur a dit non.
if (Cookiemark.hasResponse && Cookiemark.declined) {
// The visitor chose to reject everything.
}Méthodes
| Méthode | Rôle |
|---|---|
show() | Affiche le bandeau. |
hide() | Masque le bandeau sans enregistrer de choix. |
showPreferences() | Ouvre la fenêtre des préférences. renew() fait la même chose. |
acceptAll() | Autorise toutes les catégories, comme le bouton d’acceptation. |
denyAll() | Refuse toutes les catégories facultatives, comme le bouton de refus. |
withdraw() | Retire le consentement. Le journal l’enregistre comme un retrait. |
submitConsent(choice) | Enregistre un choix que vous définissez. Les catégories omises comptent comme refusées. |
runScripts() | Exécute les scripts bloqués qui sont désormais autorisés. Utilisez-la après avoir ajouté vous-même des scripts marqués à la page. |
googleConsentState() | Renvoie ce que Cookiemark transmet à Google, signal par signal. |
on(name, fn) et off(name, fn) | Ajoute ou retire une fonction pour un événement. Le nom fonctionne avec ou sans cookiemark:. |
Cookiemark.submitConsent({ preferences: true, statistics: true, marketing: false });Chaque choix enregistré via l’API est un vrai choix. Il dépose le cookie, entre dans le journal des consentements et libère ou retire les scripts, exactement comme un clic dans le bandeau.
Événements
| Événement | Quand |
|---|---|
ready | Une fois par page vue, quand Cookiemark connaît l’état. |
change | Après chaque choix du visiteur. |
accept | Après un choix qui autorise au moins une catégorie, et au chargement de la page pour un visiteur qui l’a fait auparavant. |
decline | Après un choix qui n’autorise rien, et au chargement de la page pour un visiteur qui a refusé auparavant. |
dialog-open | Quand le bandeau ou la fenêtre des préférences apparaît. |
dialog-close | Quand la fenêtre des préférences se ferme. |
scripts-executed | Quand Cookiemark a exécuté les scripts bloqués, au chargement de la page et après chaque choix. |
Chaque écouteur reçoit le même objet. consent contient les quatre catégories. action vaut accept_all, deny_all, custom, withdraw ou signal après un choix, et reste vide sinon. first vaut true quand il s’agit du premier choix du visiteur.
La file d’écouteurs
window.cookiemarkListeners est une file pour le code susceptible de s’exécuter avant le script Cookiemark, comme un modèle Tag Manager. Ajoutez-y une fonction avec push. Cookiemark l’appelle dès que le choix est connu, puis après chaque modification.
window.cookiemarkListeners = window.cookiemarkListeners || [];
window.cookiemarkListeners.push(function (googleState, categories) {
// googleState: { analytics_storage: 'granted', ad_storage: 'denied', ... }
// categories: { necessary: true, preferences: false, statistics: true, marketing: false }
});Le premier argument suit la correspondance définie dans l’onglet Google et GTM. Pour un nouveau visiteur, Cookiemark appelle la fonction dès qu’il fait son choix.
Le balisage que le script comprend
Vous pouvez créer vos propres boutons et liens sans écrire de JavaScript. Cookiemark gère le clic sur tout élément qui porte l’un de ces attributs.
| Balisage | Effet |
|---|---|
data-cookiemark-action="accept" | Autorise tout. |
data-cookiemark-action="deny" | Refuse tout. |
data-cookiemark-action="withdraw" | Retire le consentement. |
data-cookiemark-action="preferences" | Ouvre la fenêtre des préférences. |
data-cmk-allow="marketing" | Autorise la catégorie indiquée et laisse le reste du choix tel quel. |
Un lien vers #cookiemark-preferences | Ouvre la fenêtre des préférences. |
Cookiemark remplit aussi certains éléments avec les données propres au visiteur. Comme c’est le navigateur qui s’en charge, la page reste identique pour tout le monde et peut être mise en cache sans risque.
| Balisage | Ce que Cookiemark remplit |
|---|---|
data-cookiemark-consent-id | L’ID de consentement, sous forme de texte. |
data-cookiemark-consent-date | La date et l’heure du choix, sous forme de texte. |
data-cookiemark-consent-state="marketing" | L’attribut data-granted, à true ou false. Mettez-le en forme avec du CSS. |
<a href="#cookiemark-preferences">Cookie settings</a>
<button type="button" data-cookiemark-action="withdraw">Withdraw my consent</button>
<button type="button" data-cmk-allow="marketing">Allow marketing cookies</button>
<p>Your consent ID: <span data-cookiemark-consent-id></span></p>
<p>Chosen on: <span data-cookiemark-consent-date></span></p>La page de votre politique relative aux cookies est un bon endroit pour afficher l’ID de consentement. Un visiteur qui demande ce qu’il a accepté peut le citer, et vous le retrouvez dans le journal des consentements.
Le cookie de consentement
Cookiemark enregistre le choix dans un cookie propriétaire (first-party) nommé cookiemark_consent. Sa valeur est du JSON encodé au format URL, comme ceci.
{"necessary":true,"preferences":false,"statistics":true,"marketing":false,
"v":1,"id":"0b0f6c1e-3d0a-4c54-9f0e-2f1c8a4e7b11","ts":1791974400}v est la version du consentement et ts l’heure du choix en secondes. Un cookie avec une version du consentement plus ancienne compte comme une absence de choix : le bandeau s’affiche de nouveau. Lisez le choix via l’API plutôt que via le cookie quand c’est possible, car l’API tient aussi compte des régions et des signaux de confidentialité.
L’API Cookiebot
Le code de thème ou de plugin écrit pour Cookiebot interroge souvent Cookiebot.consent.marketing, ou écoute CookiebotOnAccept. Activez Répondre à l’API JavaScript de Cookiebot dans l’onglet Google et GTM, et Cookiemark répond à ce code. Il s’abstient quand le vrai script Cookiebot est encore sur la page.
| Cookiebot | Réponse de Cookiemark |
|---|---|
Cookiebot.consent.necessary, .preferences, .statistics, .marketing | Le choix actuel. |
Cookiebot.consent.stamp | L’ID de consentement Cookiemark. |
Cookiebot.consent.utc | L’heure du choix, en millisecondes. |
Cookiebot.consent.method | explicit après un choix, implied en dehors de vos régions. |
Cookiebot.consented, .declined, .hasResponse | Comme dans Cookiemark, sauf que declined reste à false jusqu’à ce que le visiteur réponde. |
show(), hide(), renew(), withdraw(), runScripts() | Les méthodes Cookiemark du même nom. |
submitCustomConsent(preferences, statistics, marketing) | Enregistre ce choix. |
Les événements CookiebotOnLoad, CookiebotOnConsentReady, CookiebotOnAccept, CookiebotOnDecline, CookiebotOnDialogInit, CookiebotOnDialogDisplay et CookiebotOnTagsExecuted sont émis sur window. Les anciennes fonctions de rappel comme CookiebotCallback_OnAccept sont aussi appelées.