Open2b fornisce strumenti integrati che facilitano la raccolta del consenso per i cookie, e altri sistemi di traccimento, e permettono di abilitarne il blocco preventivo con riattivazione asincrona una volta che il consenso è stato dato.
In qualsiasi pagina del template si può chiamare la funzione JavaScript Open2b.trackingConsent
per tenere traccia della scelta dell'utente, se ha dato o rifiutato il consenso, e per verificarne lo stato.
A seguire si vedrà come utilizzare questa funzione per implementare facilmente un proprio cookie banner.
Per un cookie banner già pronto da usare installare l'app Cookie Policy in App Store nel gestionale.
Quando l'utente dà il proprio consenso, ad esempio proseguendo con la navigazione o facendo clic su un pulsante "accetta", si può registrare questo consenso:
Open2b.trackingConsent(true);
Il consenso registrato verrà mantenuto per tutta la sessione.
Allo stesos modo, se l'utente nega il proprio consenso, ad esempio perché fa clic su un pulsante "rifiuta", si può registrare il rifiuto al trattamento:
Open2b.trackingConsent(false);
In quasiasi momento e da qualsiasi pagina si può verificare se il consenso è stato dato oppure negato:
Open2b.trackingConsent().then(function(given) {
if ( given ) {
// il consenso è stato dato.
} else {
// il consenso è stato negato.
}
});
Open2b.trackingConsent
chiamata senza argomento ritorna una promise che è pending fintanto che il consenso non viene dato o negato. Se al momento della chiamata il consenso è già stato dato o negato, la promise si risolve subito.
Il seguente è un semplice cookie banner che richiede un consenso esplicito all'utente e chiama la funzione Open2b.trackingConsent
per tenere traccia del consenso dato.
<div class="cookie-banner">
<div>Dai il consenso al tracciamento?</div>
<div class="buttons">
<button onclick="Open2b.trackingConsent(true)">Consenti</button>
<button onclick="Open2b.trackingConsent(false)">Nega</button>
</div>
</div>
Per bloccare preventivamente il codice di tracciamento e abitarlo in modo asincrono se e quando l'utente ha dato il consenso si può racchiude il codice HTML in questione all'interno di uno o più elementi template
con attributo data-cookie-consent
:
<template data-cookie-consent>
<!-- qui va messo il codice da bloccare preventivamente -->
</template>
Il codice all'interno di un elemento template
non viene renderizzato dal browser (a parte le immagini come vedremo in seguito) e pertanto il codice che contiene è "bloccato". Per sbloccarlo basta che venga chiamata, o sia già stata chiamata in un momento precedente della navigazione, la funzione Open2b.trackingConsent
con argomento true
.
Si deve mettere nelle pagine del sito il codice di tracciamento di Analytics e si vuole che venga bloccato fintanto che l'utente non ne da il consenso. Si metterà quindi il codice di Analytics all'interno di un elemento template
con l'apposito attributo data-cookie-consent
:
<template data-cookie-consent>
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=GA_MEASUREMENT_ID"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'GA_MEASUREMENT_ID');
</script>
</template>
Il codice di Analytics sarà pertanto bloccato fintanto che non viene chiamata Open2b.trackingConsent
con argomento true
, ossia non viene dato il consenso, e questo può essere fatto tramite un proprio cookie banner o installando l'app Cookie Policy presente nel App Store nel gestionale.
Una volta dato il consenso, durante tutta la sessione di navigazione sul sito il codice dentro template
verrà automaticamente sbloccato.
Gli elementi bloccati vengono sbloccati in ordine di apparizione nella pagina. Quando viene sbloccato un elemento script
con attributo src
gli elementi successivi all'interno dello stesso elemento template
sono sbloccati sono quando lo script è stato caricato ed eseguito. Se si verifica un errore nel suo caricamento o nella sua esecuzione, gli elementi successivi non sono sbloccati.
Questa dipendenza tra gli elementi di uno stesso elemento template
si può estendere anche ad altri elementi nella pagina. Se due elementi template
hanno lo stesso valore per l'attributo data-cookie-consent
, come ad esempio:
<template data-cookie-consent="analytics">
<script src="//track.analytics.com/visit.js"></script>
<script>h('visit');</script>
</template>
<template data-cookie-consent="analytics">
<script>h('order');</script>
</template>
allora un singolo non verrà sbloccato fintanto che tutti i precedenti non lo sono. Nell'esempio precedente il codice <script>h('order');</script>
non verrà sbloccato fintanto che <script src="//track.analytics.com/visit.js"></script> non è sbloccato.
Se il codice di tracciamento contiene un'immagine allora è importante anche rinominare l'attributo src
del tag img
in data-src
. Questo perché il browser Firefox carica l'immagine anche il suo tag si trova dentro un elemento template
. Nel momento in cui il tag img
viene sbloccato, l'attributo data-src
verrà rinominato in src
e l'immagine potrà essere caricata.
Ad esempio, il seguente codice di tracciamento
<img src="https://www.tracking.com/track.png">
potrà essere aggiunto alla pagina di template in questo modo
<template data-cookie-consent>
<img data-src="https://www.tracking.com/track.png">
</template>