Strumenti Utente



cookie_accept_kit_norma_cookie

Cookie-Accept: un kit per adeguarsi alla norma sui cookie

Abbiamo visto poco tempo fa Cookie-consent, uno strumento per adeguare il proprio sito alla norma europeo. Vedremo ora Cookie-Accept, uno strumento con funzionalità analoghe a Cookie-consent, che permette di gestire i casi in cui il codice da bloccare presenta direttive del tipo document.write, che mettono quest'ultimo in difficoltà.

Il problema

La norma europea sulla privacy non ci permette di installare cookie fino a quando non abbiamo ottenuto il consenso dell'utente. Abbiamo già visto che la versione 1 di cookie-consent permette di risolvere elegantemente il problema (l'ultima versione ha rimosso questa funzionalità :-( ). Cookie-consent (ma non solo lui…) carica in un primo momento la pagina disattivando alcune porzioni di codice javascript che poi verranno riattivate una volta acquisito il consenso. Se il codice disattivato è predisposto per aggiungere elementi alla pagina anche una volta che questa è stata caricata, la soluzione appena delineata funziona senza problemi. Se invece il codice in questione presuppone di essere eseguito durante il caricamento della pagina, le cose si fanno più complesse. Questo problema si verifica, ad esempio, quando il codice contiene la direttiva document.write, che funziona solo durante il caricamento della pagina.

Anche in questo caso Cookie-consent ha una soluzione che può essere analizzata nel dettaglio studiandone direttamente il codice: la direttiva document.write viene ridefinita ed il codice in questione viene aggiunto in un secondo momento in corrispondenza di alcuni “segnalibri” lasciati durante il primo caricamento della pagina.

In caso di pagine complesse e/o tempi di caricamento lunghi può capitare che la procedura appena descritta vada in tilt associando il codice ai segnalibri sbagliati. Per risolvere il problema è necessario aumentare il valore della variabile settings.scriptdelay nel codice. In questo modo però:

  • aumenta il tempo di caricamento della pagina
  • mentre il lettore sta leggendo vede la pagina cambiare in continuazione
  • questi problemi si ripresentano ad ogni caricamento delle pagine del sito, anche una volta acquisito il consenso.

La soluzione: Cookie-Accept!

Per risolvere alla radice il problema ho deciso di cambiare approccio: se le porzioni di codice da inserire richiedono di essere eseguite al caricamento della pagina, ricaricheremo la pagina all'interno del browser!

E' nato così Cookie-Accept, un semplice kit composto da:

  • un file javascript (cookie-accept.js) che gestisce la procedura di verifica e creazione dei cookie
  • un foglio di stile (cookie-accept.css) che permette di personalizzare la grafica

Come funziona

Per installare il kit dovrete scaricare i due file sopra indicati. Aprendo il file cookie-accept.js modificate i messaggi riportati a video ridefinendo la variabili msgInfo e msgMoreInfo.

Copiate quindi i due file nel vostro sito.

A questo punto è necessario apportare alcune piccole modifiche al codice html delle pagine. Nella sezione head richiamate i file copiati con le righe

<script type="text/javascript" src="__indirizzo__/cookie-accept.js"> </script>
<link href="__indirizzo__/style.css" rel="stylesheet" type="text/css">

All'inizio della sezione body aggiungete invece

<script type="text/javascript">
  cookieAccept.writeDialogs();
</script>

L'ultimo passaggio consiste nell'inserire i blocchi di codice incriminati della creazione di cookie all'interno di un'istruzione if

if( cookieAccept.cookieAccepted ) {
  ...
  codice javascript cookie
  ...
}

Volete vedere cookie-accept all'opera? Beh, IngegneriaLibera utilizza Cookie-Accept, quindi in realtà avete già visto come funziona!

Licenza

Il tutto è rilasciato sotto licenza GPLv3. Potrete quindi scaricare e modificare i file adattandoli al meglio alle vostre esigenze, a condizione di rilasciare le modifiche sotto la stessa licenza.

Comments


cookie_accept_kit_norma_cookie.txt · Ultima modifica: 2015/06/21 19:46 da mickele

Facebook Twitter Google+ Digg Reddit LinkedIn StumbleUpon Email