Aller au contenu

Intégration du SDK JavaScript (Client)

Le SDK JS vise les meilleures performances avec zéro dépendance. Notre plateforme résout vos besoins de gestion des cookies et vous permet d’obtenir facilement des consentements juridiquement contraignants.


Commencez avec une seule balise script. Design du bandeau, catégories de cookies, textes et conformité régionale (RGPD, CCPA…) — tout est géré depuis le tableau de bord HashEntry :

<head>
<script
src="https://tool.hashentry.com/cmp.js"
data-site="VOTRE_CLE_API_SITE"
async
></script>
</head>

C’est tout. Le SDK récupère la configuration liée à votre clé API depuis le serveur ; le design, les couleurs, la langue, les catégories et les paramètres sont tous contrôlés depuis le tableau de bord.

Marquez les scripts qui ne doivent pas s’exécuter avant le consentement avec type="text/plain" :

<script type="text/plain" data-cookie-category="analytics">
// Google Analytics — ne s'exécute pas tant que "analytics" n'est pas approuvé
</script>
<script type="text/plain" data-cookie-category="marketing"
data-src="https://connect.facebook.net/en_US/fbevents.js">
</script>
  1. Icône par défaut : Une icône persistante « Préférences de cookies » apparaît à l’écran.
  2. Bouton personnalisé : Masquez l’icône et appelez CMP.show() depuis votre propre lien de pied de page.

AttributRequisDéfautDescription
data-siteClé API du site
data-modelocal-fallbackMode : remote, local, local-fallback
data-languageautoLangue du bandeau (auto = détection navigateur)
data-regionautoOverride de région
data-configConfiguration JSON inline (mode local)
data-debugfalseMode développeur
data-headlessfalseMode sans interface

CMP.ready(() => { console.log('HashEntry CMP chargé.'); });
CMP.show();
CMP.hide();
CMP.accept();
CMP.reject();
const consent = CMP.getConsent();
CMP.hasConsent('analytics');
CMP.setMetadata({ order_id: 'ORD-54321' });
CMP.showDocumentApproval('cgv', { transaction_id: 'TRX-101' })
.then(result => { if (result.approved) console.log("Approuvé !", result.proof_hash); });
CMP.on('consent:given', (data) => { console.log("Consentement :", data.categories); });
<script>
window.__CMP_QUEUE = window.__CMP_QUEUE || [];
window.__CMP_QUEUE.push(['setMetadata', { order_id: 'ORD-12345' }]);
window.__CMP_QUEUE.push(['setRegion', 'FR']);
</script>

ModeComportementdata-siteServeur
remoteConfig récupérée du serveurRequisRequis
localToute la config fournie par la pageOptionnelAucun
local-fallback (défaut)Essaie le serveur, revient au local en cas d’échecOptionnelPréféré

Fonctionner entièrement sans serveur. Idéal pour les environnements de test et les scénarios hors ligne.

<head>
<script type="application/json" id="cmp-config">
{
"banner_config": {
"layout": "bottom_bar",
"region_detection": "timezone",
"theme": {
"primary_color": "#2563EB",
"font_family": "system",
"theme_mode": "auto",
"widget_icon": "cookie",
"widget_position": "bottom_left"
},
"content": {
"title": "Vos Préférences de Cookies",
"description": "Ce site web utilise des cookies pour améliorer votre expérience.",
"accept_button_text": "Tout Accepter",
"reject_button_text": "Tout Refuser",
"settings_button_text": "Gérer les Préférences",
"save_selected_text": "Accepter la Sélection",
"close_text": "Fermer",
"widget_label": "Préférences de Cookies"
},
"categories": [
{
"key": "necessary",
"label": "Nécessaires",
"description": "Requis pour le fonctionnement de base.",
"required": true
},
{
"key": "analytics",
"label": "Analytiques",
"description": "Statistiques de visiteurs.",
"required": false
},
{
"key": "marketing",
"label": "Marketing",
"description": "Publicités personnalisées.",
"required": false
}
],
"mobile_layout": "bottom_bar",
"behavior": {
"show_reject_button": true,
"show_settings_button": true,
"show_widget": true,
"show_powered_by": true,
"block_page_scroll": false,
"modal_layout": "sidebar_right",
"cookie_display_mode": "vendor",
"banner_animation": "slide_fade",
"modal_tabs": true,
"record_informational_consent": false
}
}
}
</script>
<script src="https://tool.hashentry.com/cmp.js" data-mode="local" data-language="fr" async></script>
</head>

Avancé : Détection de Région (region_detection)

Section intitulée « Avancé : Détection de Région (region_detection) »
MéthodeFonctionnementRequête Réseau
timezoneEstimation du pays via le fuseau horaire du navigateur (120+ correspondances)Non
freegeoipService gratuit IP→pays (timeout 3s, fallback sur timezone)Oui