Indice della documentazione

Cookie solution ›

Blocco preventivo dei cookie – Google Adsense e DoubleClick for Publishers (DFP)


Guida per Google AdSense

Riportiamo di seguito la procedura originale che prevede l’inclusione di due tag script:

<script type="text/javascript">
        google_ad_client = "ca-pub-00000000";
        google_ad_slot = "XXXXXXXXXX";
        google_ad_width = 728;
        google_ad_height = 90;
</script>
<script type="text/javascript" src="//pagead2.googlesyndication.com/pagead/show_ads.js"></script>

Per evitare che i banner Google AdSense registrino cookie prima del consenso è necessario apportare queste modifiche:

  1. Definire la funzione iubenda_adsense_unblock associandola alla callback onConsentGiven:

<script>
        function iubenda_adsense_unblock(){
            var t = 1;
            $('._iub_cs_activate_google_ads').each(function() {
                var banner = $(this);
                setTimeout(function(){
                    var client = banner.data('client');
                    var slot = banner.data('slot');
                    var width = banner.data('width');
                    var height = banner.data('height');
                    var adsense_script = '<scr'+'ipt type="text/javascript">\n'
                            + 'google_ad_client = "'+client+'";\n'
                            + 'google_ad_slot = "'+slot+'";\n'
                            + 'google_ad_width = '+width+';\n'
                            + 'google_ad_height = '+height+';\n'
                            + '</scr'+'ipt>';
                    var script = document.createElement('script');
                    var ads = document.createElement('ads');
                    var w = document.write;

                    // override and replace with our version
                    document.write = (function(params)
                    {
                        // replace our placeholder with real ads
                        ads.innerHTML = params;
                        // put the old implementation back in place
                        // Aristos, add this check because called more than ones
                        //  and ends, with this symbol.
                        if(params.indexOf("</ins>") != -1)
                            document.write=w;
                    });
                    script.setAttribute('type', 'text/javascript');
                    script.setAttribute('src', 'http://pagead2.googlesyndication.com/pagead/show_ads.js');
                    script.setAttribute('async', 'async');
                    banner.html(adsense_script).append(ads).append(script);
                }, t);
                t += 200;
            });
        }

        if('callback' in _iub.csConfiguration) {
            _iub.csConfiguration.callback.onConsentGiven = iubenda_adsense_unblock;
        } else {
            _iub.csConfiguration.callback = {};
            _iub.csConfiguration.callback.onConsentGiven = iubenda_adsense_unblock;
        }
    </script>
    
    

È consigliabile inserire il codice appena riportato appena dopo la configurazione di Iubenda Cookie Solution.

2. Creare un tag div per ogni banner, trasponendo i parametri su attributi di tipo data- e inserendoci la classe _iub_cs_activate_google_ads :

<div style="width: 728px;height:90px;" class="_iub_cs_activate_google_ads"
         data-client="ca-pub-00000000"
         data-slot="XXXXXXXXXX"
         data-width="728"
         data-height="90">
</div>

Guida per DoubleClick for Publisher (DFP)

Affinché DoubleClick for Publishers (DFP) possa installare cookie solo dopo la raccolta del consenso dell’utente, bisogna adottare uno dei metodi descritti in quest’articolo per far sì che la iubenda Cookie Solution possa interagire con DFP, in particolare bloccandone il tracciamento quando il cookie di preferenza di iubenda non è presente nel browser dell’utente.

È possibile scegliere uno dei tre metodi di integrazione disponibili, a seconda della versione del codice DFP utilizzata. I metodi proposti per i codici “asynchronous” e “synchronous” funzionano solamente per le creatività fornite direttamente da DFP.

Metodo 1 – Codice “asynchronous”

Di seguito sono disponibili i codici “asynchronous” prima e dopo la modifica dello script.

PRIMA (asynchronous)

Script per la configurazione di DFP:

<script type="text/javascript">
          var googletag = googletag || {};
          googletag.cmd = googletag.cmd || [];
          (function () {
              var gads = document.createElement("script");
              gads.async = true;
              gads.type = "text/javascript";
              var useSSL = "https:" == document.location.protocol;
              gads.src = (useSSL ? "https:" : "http:") + "//www.googletagservices.com/tag/js/gpt.js";
              var node = document.getElementsByTagName("script")[0];
              node.parentNode.insertBefore(gads, node);
          })();
</script>
      <script type="text/javascript">
          googletag.cmd.push(function () {
              googletag.pubads().set("adsense_background_color", "FFFFFF");
          });
      </script>
      <script>
         googletag.cmd.push(function() {
          googletag.defineSlot("/1234/travel/asia/food", [728, 90], "div-gpt-ad-123456789-0")
                      .addService(googletag.pubads())
                      .setTargeting("interests", ["sports", "music", "movies"]);
              googletag.pubads().setTargeting("topic", "basketball");
              googletag.pubads().enableSingleRequest();
              googletag.enableServices();
         });
      </script>

I singoli banner DFP:

    <div id="div-gpt-ad-123456789-0" style="width: width; height: height;">
      <script type="text/javascript">
          googletag.cmd.push(function () {
              googletag.display("div-gpt-ad-123456789-0");
          });
      </script>
    </div>

DOPO (asynchronous)

Modifiche necessarie alla configurazione di DFP per il blocco dei cookie.

1. Definire la funzione isConsentGiven per il controllo dei cookie:

<script type='text/javascript'>
      function isConsentGiven() {
          if('consentIsGiven' in window && (consentIsGiven === true || consentIsGiven === false)) return consentIsGiven;
          if(!('_iub' in window && 'csConfiguration' in _iub)) return false;
          var siteId = _iub.csConfiguration.siteId || '';
          var cookiePolicyId = _iub.csConfiguration.cookiePolicyId || '';
          var cs = document.cookie.split(';');
          var consentIsGiven = false;
          for (var i = 0; i < cs.length; i++) {
              while (cs[i].charAt(0) == ' ') cs[i] = cs[i].substring(1);
              if(cs[i].indexOf('_iub_cs-s'+ siteId) == 0||cs[i].indexOf('_iub_cs-'+ cookiePolicyId) == 0) {
                  consentIsGiven = true;
                  break;
              }
          }
          window.consentIsGiven = consentIsGiven;
          return consentIsGiven;
      }
    </script>

2. Allo script DFP verrà aggiunto il controllo isConsentGiven che stabilisce se installare o meno i cookie

<script type="text/javascript">
          var googletag = googletag || {};
          googletag.cmd = googletag.cmd || [];
          (function () {
              var gads = document.createElement("script");
              gads.async = true;
              gads.type = "text/javascript";
              var useSSL = "https:" == document.location.protocol;
              gads.src = (useSSL ? "https:" : "http:") + "//www.googletagservices.com/tag/js/gpt.js";
              var node = document.getElementsByTagName("script")[0];
              node.parentNode.insertBefore(gads, node);
          })();
</script>
<script>
    googletag.cmd.push(function () {
        if(isConsentGiven())
            googletag.pubads().setCookieOptions(0);
        else
            googletag.pubads().setCookieOptions(1);
        googletag.defineSlot('/1234/travel', [728,90], "div-gpt-ad-123456789-0").addService(googletag.pubads());
        googletag.pubads().enableSyncRendering();
        googletag.enableServices();
    });
</script>

3. Aggiungere gli elementi dei banner DFP senza nessuna alterazione:

<div id="div-gpt-ad-123456789-0" style="width: width; height: height;">
      <script type="text/javascript">
          googletag.cmd.push(function () {
              googletag.display("div-gpt-ad-123456789-0");
          });
      </script>
</div>

In particolare la porzione di codice con la funzione isConsentGiven va inserita prima dello script DFP e preferibilmente dopo il codice che inizializza la iubenda cookie solution.

Metodo 2 – Codice “synchronous”

Qui in basso sono disponibili invece i codici “synchronous” prima e dopo l’aggiunta dello script di iubenda.

PRIMA (synchronous)

Script per la configurazione di DFP

<script type="text/javascript">
          (function() {
              var useSSL = 'https:' == document.location.protocol;
              var src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js';
              document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>');
          })();
</script>
<script type="text/javascript">
              googletag.pubads().set("adsense_background_color", "FFFFFF");
</script>
<script>
    googletag.defineSlot("/1234/travel/asia/food", [728, 90], "div-gpt-ad-123456789-0")
        .addService(googletag.pubads())
        .setTargeting("interests", ["sports", "music", "movies"]);
   googletag.pubads().setTargeting("topic", "basketball");
   googletag.pubads().enableSingleRequest();
   googletag.enableServices();
</script>

I singoli banner DFP:

<div id="div-gpt-ad-123456789-0" style="width: width; height: height;">
      <script type="text/javascript">
              googletag.display("div-gpt-ad-123456789-0");
      </script>
    </div>

DOPO (synchronous)

Modifiche necessarie alla configurazione di DFP per il blocco dei cookie.

1. Definire la funzione isConsentGiven per il controllo dei cookie:

<script type='text/javascript'>
      function isConsentGiven() {
          if('consentIsGiven' in window && (consentIsGiven === true || consentIsGiven === false)) return consentIsGiven;
          if(!('_iub' in window && 'csConfiguration' in _iub)) return false;
          var siteId = _iub.csConfiguration.siteId || '';
          var cookiePolicyId = _iub.csConfiguration.cookiePolicyId || '';
          var cs = document.cookie.split(';');
          var consentIsGiven = false;
          for (var i = 0; i < cs.length; i++) {
              while (cs[i].charAt(0) == ' ') cs[i] = cs[i].substring(1);
              if(cs[i].indexOf('_iub_cs-s'+ siteId) == 0||cs[i].indexOf('_iub_cs-'+ cookiePolicyId) == 0) {
                  consentIsGiven = true;
                  break;
              }
          }
          window.consentIsGiven = consentIsGiven;
          return consentIsGiven;
      }
    </script>

2. Allo script DFP verrà aggiunto il controllo isConsentGiven che stabilisce se installare o meno i cookie

<script type="text/javascript">
          (function() {
              var useSSL = 'https:' == document.location.protocol;
              var src = (useSSL ? 'https:' : 'http:') + '//www.googletagservices.com/tag/js/gpt.js';
              document.write('<scr' + 'ipt src="' + src + '"></scr' + 'ipt>');
          })();
</script>
<script type="text/javascript">
              googletag.pubads().set("adsense_background_color", "FFFFFF");
</script>
<script>
    if(isConsentGiven())
         googletag.pubads().setCookieOptions(0);
    else
         googletag.pubads().setCookieOptions(1);
    googletag.defineSlot("/1234/travel/asia/food", [728, 90], "div-gpt-ad-123456789-0")
        .addService(googletag.pubads())
        .setTargeting("interests", ["sports", "music", "movies"]);
   googletag.pubads().setTargeting("topic", "basketball");
   googletag.pubads().enableSingleRequest();
   googletag.enableServices();
</script>

I singoli banner DFP senza nessuna alterazione:

<div id="div-gpt-ad-123456789-0" style="width: width; height: height;">
      <script type="text/javascript">
              googletag.display("div-gpt-ad-123456789-0");
      </script>
</div>

Anche in questo caso il codice contenente la funzione isConsentGiven va inserito prima di DFP, e preferibilmente dopo lo script di iubenda.

Metodo 3

Infine, se le creatività provengono da servizi esterni a DFP bisogna utilizzare i codici disponibili in basso.

Ecco il codice senza modifiche:

1. Inclusione dello script DFP:

<script type="text/javascript">
          var googletag = googletag || {};
          googletag.cmd = googletag.cmd || [];
          (function() {
              var gads = document.createElement('script');
              gads.async = true;
              gads.type = 'text/javascript';
              var useSSL = 'https:' == document.location.protocol;
              gads.src = (useSSL ? 'https:' : 'http:') +
                      '//www.googletagservices.com/tag/js/gpt.js';
              var node = document.getElementsByTagName('script')[0];
              node.parentNode.insertBefore(gads, node);
          })();
      </script>
      <script type="text/javascript">
          googletag.cmd.push(function () {
              googletag.pubads().set("adsense_background_color", "FFFFFF");
          });
      </script>
      <script>
          googletag.cmd.push(function() {
              googletag.defineSlot('/1010125/Prontoimprese/Ros/300x250Top-ProntoImprese-Ros', [[300, 250], [300, 600]], 'div-gpt-ad-1330418177496-1').addService(googletag.pubads());
              googletag.pubads().enableSingleRequest();
              googletag.enableServices();
          });
      </script>

2. I singoli banner DFP:

<div id="div-gpt-ad-1330418177496-1">
      <script  type="text/javascript">
          googletag.cmd.push(function () {
              googletag.display("div-gpt-ad-1330418177496-1");
          });
      </script>
</div>

Questo è invece il codice con le modifiche necessarie per consentire il corretto funzionamento della Cookie Solution:

1. Si aggiunge la classe _iub_cs_activate agli script di DFP:

<script type="text/plain" class="_iub_cs_activate">
          var googletag = googletag || {};
          googletag.cmd = googletag.cmd || [];
          (function() {
              var gads = document.createElement('script');
              gads.async = true;
              gads.type = 'text/javascript';
              var useSSL = 'https:' == document.location.protocol;
              gads.src = (useSSL ? 'https:' : 'http:') +
                      '//www.googletagservices.com/tag/js/gpt.js';
              var node = document.getElementsByTagName('script')[0];
              node.parentNode.insertBefore(gads, node);
          })();
      </script>
      <script type="text/plain" class="_iub_cs_activate">
          googletag.cmd.push(function () {
              googletag.pubads().set("adsense_background_color", "FFFFFF");
          });
      </script>
      <script type="text/plain" class="_iub_cs_activate">
        googletag.cmd.push(function() {
              googletag.defineSlot('/1010125/Prontoimprese/Ros/300x250Top-ProntoImprese-Ros', [[300, 250], [300, 600]], 'div-gpt-ad-1330418177496-1').addService(googletag.pubads());
              googletag.pubads().enableSingleRequest();
              googletag.enableServices();
            });
      </script>

2. Aggiungere ad ogni banner DFP la classe _iub_cs_activate-inline

<div id="div-gpt-ad-1330418177496-1" style="width: 728px; height: 90px">

      <script  type="text/plain" class="_iub_cs_activate-inline">
          googletag.cmd.push(function () {
              googletag.display("div-gpt-ad-1330418177496-1");
          });
      </script>

    </div>

Articoli correlati

Quali sono gli adempimenti richiesti dalle diverse tipologie di cookie?

Abbiamo preparato un’infografica sugli adempimenti richiesti dalla cookie law per facilitare l’analisi dei cookie ed in particolare per capire quando siano richiesti banner, consenso preventivo, notifica al Garante ecc. a seconda del tipo di cookie utilizzato.


Hai ancora domande?

Visita il nostro forum di supporto Scrivici via email