La loi a changé concernant les cookies déposés chez les utilisateurs. Pour cela la CNIL a créé une page qui explique ce qu’il en est. Ils proposent même un bout de code pour le opt-in et le opt-out, que j’ai légèrement modifié :
// Remplacez la valeur UA-XXXXXX-Y par l'identifiant analytics de votre site.
var gaProperty = 'UA-XXXXXX-Y';
// Désactive le tracking si le cookie d'Opt-out existe déjà
var disableStr = 'ga-disable-' + gaProperty;
if (document.cookie.indexOf('hasConsent=false') > -1) window[disableStr] = true;
//Cette fonction retourne la date d.expiration du cookie de consentement
function getCookieExpireDate() {
var cookieTimeout = 34214400000; // Le nombre de millisecondes que font 13 mois
var date = new Date();
date.setTime(date.getTime()+cookieTimeout);
var expires = "; expires="+date.toGMTString();
return expires;
}
// Cette fonction est appelée pour afficher la demande de consentement
function askConsent(){
var bodytag = document.getElementsByTagName('body')[0];
var div = document.createElement('div');
div.setAttribute('id','cookie-banner');
div.style.width="50%";
div.style.position="absolute";
div.style.left="20%";
// Le code HTML de la demande de consentement
// Vous pouvez modifier le contenu ainsi que le style
div.innerHTML = '<div style="background-color:transparent;color:#fff">Ce site utilise Google Analytics.\
En continuant à naviguer, vous nous autorisez à déposer des cookies à des fins de \
mesure d\'audience. Vous pouvez vous <a href="#optout" onclick="gaOptout()">opposer à ce dépôt</a> ou <a href="#optin" onclick="gaOptIn(); document.getElementById(\'cookie-banner\').style.display=\'none\'">ignorer ce message</a>.</div>';
bodytag.insertBefore(div,bodytag.firstChild); // Ajoute la bannière juste au début de la page
document.getElementsByTagName('body')[0].className+=' cookiebanner';
}
// Retourne la chaine de caractère correspondant à nom=valeur
function getCookie(NomDuCookie) {
if (document.cookie.length > 0) {
var begin = document.cookie.indexOf(NomDuCookie+"=");
if (begin != -1) {
begin += NomDuCookie.length+1;
var end = document.cookie.indexOf(";", begin);
if (end == -1) end = document.cookie.length;
return unescape(document.cookie.substring(begin, end));
}
}
return null;
}
// Fonction d'effacement des cookies
function delCookie(name) {
var path = ";path=" + "/";
var domain = ";domain=" + "."+document.location.hostname;
var expiration = "Thu, 01-Jan-1970 00:00:01 GMT";
document.cookie = name + "=" + path + domain + ";expires=" + expiration;
}
// Efface tous les types de cookies utilisés par Google Analytics
function deleteAnalyticsCookies() {
var cookieNames = ["__utma","__utmb","__utmc","__utmz","_ga"]
for (var i=0; i<cookieNames.length; i++) delCookie(cookieNames[i])
}
// La fonction d'opt-out
function gaOptout() {
document.cookie = disableStr + '=true;'+ getCookieExpireDate() +' ; path=/';
document.cookie = 'hasConsent=false;'+ getCookieExpireDate() +' ; path=/';
var div = document.getElementById('cookie-banner');
// Ci dessous le code de la bannière affichée une fois que l'utilisateur s'est opposé au dépôt
// Vous pouvez modifier le contenu et le style
if ( div!= null ) div.innerHTML = '<div style="background-color:#ffffff"> Vous vous êtes opposé \
au dépôt de cookies de mesures d\'audience dans votre navigateur.</div>'
window[disableStr] = true;
deleteAnalyticsCookies();
}
function gaOptIn() {
document.cookie = 'hasConsent=true; '+ getCookieExpireDate() +' ; path=/';
}
//Ce bout de code vérifie que le consentement n'a pas déjà été obtenu avant d'afficher la bannière
var consentCookie = getCookie('hasConsent');
//L'utilisateur n'a pas encore de cookie de consentement
if (!consentCookie) askConsent()
// Google Analytics
var _gaq = _gaq || [];
_gaq.push(['_setAccount', gaProperty]);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script');
ga.src = 'http://www.google-analytics.com/ga.js';
ga.setAttribute('async', 'true');
document.documentElement.firstChild.appendChild(ga);
})();
Bonjour,
merci pour ce code,
quelle est sa différence par rapport à celui de Google ?
Je vois qu’on efface plus les cookies dans certains cas mais j’ai du mal à suivre…
merci d’avance
Renaud> je ne sais pas ce que tu appelles “celui de Google” ?? En tout cas, le code de la CNIL proposet aux internautes d’accepter ou de refuser la présence de cookies, à la différence de la plupart des sites qui aujourd’hui ne font que faire apparaitre une bannière indiquant qu’il y a des cookies sur le site (et ne donnent pas de moyen de faire de opt-out et donc de refuser le tracking, sauf en arrêtant de surfer sur le site en question).