{"id":1298,"date":"2014-01-28T15:41:44","date_gmt":"2014-01-28T14:41:44","guid":{"rendered":"http:\/\/blog.kodono.info\/wordpress\/?p=1298"},"modified":"2014-01-28T15:41:44","modified_gmt":"2014-01-28T14:41:44","slug":"google-analytics-les-recommandations-de-la-cnil-javascript","status":"publish","type":"post","link":"https:\/\/blog.kodono.info\/wordpress\/2014\/01\/28\/google-analytics-les-recommandations-de-la-cnil-javascript\/","title":{"rendered":"Google Analytics : les recommandations de la CNIL [JavaScript]"},"content":{"rendered":"<p>La loi a chang\u00e9 concernant les cookies d\u00e9pos\u00e9s chez les utilisateurs. Pour cela <a href=\"http:\/\/www.cnil.fr\/vos-obligations\/sites-web-cookies-et-autres-traceurs\/outils-et-codes-sources\/la-mesure-daudience\/\">la CNIL a cr\u00e9\u00e9 une page qui explique ce qu&#8217;il en est<\/a>. Ils proposent m\u00eame un bout de code pour le opt-in et le opt-out, que j&#8217;ai l\u00e9g\u00e8rement modifi\u00e9 :<\/p>\n<pre class=\"brush:javascript\">\r\n\/\/ Remplacez la valeur UA-XXXXXX-Y par l'identifiant analytics de votre site.\r\nvar gaProperty = 'UA-XXXXXX-Y';\r\n\/\/ D\u00e9sactive le tracking si le cookie d'Opt-out existe d\u00e9j\u00e0\r\nvar disableStr = 'ga-disable-' + gaProperty;\r\nif (document.cookie.indexOf('hasConsent=false') > -1) window[disableStr] = true;\r\n\/\/Cette fonction retourne la date d.expiration du cookie de consentement \r\nfunction getCookieExpireDate() { \r\n  var cookieTimeout = 34214400000; \/\/ Le nombre de millisecondes que font 13 mois \r\n  var date = new Date();\r\n  date.setTime(date.getTime()+cookieTimeout);\r\n  var expires = \"; expires=\"+date.toGMTString();\r\n  return expires;\r\n}\r\n\/\/ Cette fonction est appel\u00e9e pour afficher la demande de consentement\r\nfunction askConsent(){\r\n  var bodytag = document.getElementsByTagName('body')[0];\r\n  var div = document.createElement('div');\r\n  div.setAttribute('id','cookie-banner');\r\n  div.style.width=\"50%\";\r\n  div.style.position=\"absolute\";\r\n  div.style.left=\"20%\";\r\n  \/\/ Le code HTML de la demande de consentement\r\n  \/\/ Vous pouvez modifier le contenu ainsi que le style\r\n  div.innerHTML =  '&lt;div style=\"background-color:transparent;color:#fff\">Ce site utilise Google Analytics.\\\r\n  En continuant \u00e0 naviguer, vous nous autorisez \u00e0 d\u00e9poser des cookies \u00e0 des fins de \\\r\n  mesure d\\'audience. Vous pouvez vous &lt;a href=\"#optout\" onclick=\"gaOptout()\">opposer \u00e0 ce d\u00e9p\u00f4t&lt;\/a> ou &lt;a href=\"#optin\" onclick=\"gaOptIn(); document.getElementById(\\'cookie-banner\\').style.display=\\'none\\'\">ignorer ce message&lt;\/a>.&lt;\/div>';          \r\n  bodytag.insertBefore(div,bodytag.firstChild); \/\/ Ajoute la banni\u00e8re juste au d\u00e9but de la page \r\n  document.getElementsByTagName('body')[0].className+=' cookiebanner';              \r\n}      \r\n\/\/ Retourne la chaine de caract\u00e8re correspondant \u00e0 nom=valeur\r\nfunction getCookie(NomDuCookie)  {\r\n  if (document.cookie.length > 0) {        \r\n    var begin = document.cookie.indexOf(NomDuCookie+\"=\");\r\n    if (begin != -1)  {\r\n      begin += NomDuCookie.length+1;\r\n      var end = document.cookie.indexOf(\";\", begin);\r\n      if (end == -1) end = document.cookie.length;\r\n      return unescape(document.cookie.substring(begin, end)); \r\n    }\r\n  }\r\n  return null;\r\n}\r\n\/\/ Fonction d'effacement des cookies   \r\nfunction delCookie(name)   {\r\n  var path = \";path=\" + \"\/\";\r\n  var domain = \";domain=\" + \".\"+document.location.hostname;\r\n  var expiration = \"Thu, 01-Jan-1970 00:00:01 GMT\";       \r\n  document.cookie = name + \"=\" + path + domain + \";expires=\" + expiration;\r\n}\r\n\/\/ Efface tous les types de cookies utilis\u00e9s par Google Analytics    \r\nfunction deleteAnalyticsCookies() {\r\n  var cookieNames = [\"__utma\",\"__utmb\",\"__utmc\",\"__utmz\",\"_ga\"]\r\n  for (var i=0; i&lt;cookieNames.length; i++) delCookie(cookieNames[i])\r\n}\r\n\/\/ La fonction d'opt-out   \r\nfunction gaOptout() {\r\n  document.cookie = disableStr + '=true;'+ getCookieExpireDate() +' ; path=\/';       \r\n  document.cookie = 'hasConsent=false;'+ getCookieExpireDate() +' ; path=\/';\r\n  var div = document.getElementById('cookie-banner');\r\n  \/\/ Ci dessous le code de la banni\u00e8re affich\u00e9e une fois que l'utilisateur s'est oppos\u00e9 au d\u00e9p\u00f4t\r\n  \/\/ Vous pouvez modifier le contenu et le style\r\n  if ( div!= null ) div.innerHTML = '&lt;div style=\"background-color:#ffffff\"> Vous vous \u00eates oppos\u00e9 \\\r\n  au d\u00e9p\u00f4t de cookies de mesures d\\'audience dans votre navigateur.&lt;\/div>'\r\n  window[disableStr] = true;\r\n  deleteAnalyticsCookies();\r\n}\r\nfunction gaOptIn() {\r\n  document.cookie = 'hasConsent=true; '+ getCookieExpireDate() +' ; path=\/';\r\n}\r\n\/\/Ce bout de code v\u00e9rifie que le consentement n'a pas d\u00e9j\u00e0 \u00e9t\u00e9 obtenu avant d'afficher la banni\u00e8re\r\nvar consentCookie = getCookie('hasConsent');\r\n\/\/L'utilisateur n'a pas encore de cookie de consentement\r\nif (!consentCookie) askConsent()\r\n\/\/ Google Analytics\r\nvar _gaq = _gaq || [];\r\n_gaq.push(['_setAccount', gaProperty]);\r\n_gaq.push(['_trackPageview']);\r\n\r\n(function() {\r\n  var ga = document.createElement('script');\r\n  ga.src = 'http:\/\/www.google-analytics.com\/ga.js';\r\n  ga.setAttribute('async', 'true');\r\n  document.documentElement.firstChild.appendChild(ga);\r\n})();\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>La loi a chang\u00e9 concernant les cookies d\u00e9pos\u00e9s chez les utilisateurs. Pour cela la CNIL a cr\u00e9\u00e9 une page qui explique ce qu&#8217;il en est. Ils proposent m\u00eame un bout de code pour le opt-in et le opt-out, que j&#8217;ai l\u00e9g\u00e8rement modifi\u00e9 : \/\/ Remplacez la valeur UA-XXXXXX-Y par l&#8217;identifiant analytics de votre site. var [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","hide_page_title":"","footnotes":""},"categories":[11,33],"tags":[24,151,158],"class_list":["post-1298","post","type-post","status-publish","format-standard","hentry","category-niveau-debutant","category-programmation","tag-javascript","tag-niveau-debutant","tag-programmation"],"_links":{"self":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/1298","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/comments?post=1298"}],"version-history":[{"count":1,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/1298\/revisions"}],"predecessor-version":[{"id":1300,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/posts\/1298\/revisions\/1300"}],"wp:attachment":[{"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/media?parent=1298"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/categories?post=1298"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.kodono.info\/wordpress\/wp-json\/wp\/v2\/tags?post=1298"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}