---
title: Blocco manuale degli Script
slug: it-pubtech-cmp/blocco-manuale-degli-script
docTags: 
createdAt: 2024-05-07T14:24:21.929Z
---

## Guida all’implementazione per il blocco degli script che potrebbero installare cookie

Le norme per garantire la **privacy** dell'utente impediscono il trattamento prima del consenso.

Infatti la **Cookie Law** specifica che non è possibile utilizzare/installare un cookie prima di aver ottenuto il consenso dell'utente, fatta eccezione per le categorie di cookie esenti (cookie tecnici).

In questa guida vi mostriamo i passi da eseguire per essere compliant anche sotto questo aspetto, grazie alla funzionalità esposta dalla nostra **PubConsent CMP**.

:::hint{type="info"}
**Attualmente viste le limitazioni dei browser supportiamo e consigliamo l'utilizzo del solo blocco degli script manuale.**

Per ambiente AMP seguire le istruzioni che potete trovare cliccando [qui](docId\:vvSfScjoyxuaW8fI9B6BM)
:::

### Adeguare i tag script, img e iframe

Per abilitare il blocco degli script che potrebbero installare cookie, è necessario modificare questi i tag delle pagine che installano dei cookie. Apportando tali modifiche si abiliterà la nostra **PubConsent CMP** a prevenirne l’esecuzione nei casi in cui non è stato ancora prestato il consenso e di verificare anche se l'utente ha accettato una determinata categoria di consenso nel caso in cui fosse specificato il requisito di abilitazione nel relativo tag (**script**, **img** e **iframe**).

Per farlo applicare le seguenti modifiche:

1. aggiungi la classe `_js_pt_activate` ai tag `script`
2. cambia l’attributo `type` da `text/javascript` a `text/plain` \*(1)
3. sostituisci la chiave `src` con `data-suppressedsrc`

```Text
<script class="_js_pt_activate" type="text/plain" data-suppressedsrc="code-example.js">….</script>
```

Per l’attivazione dei tag JavaScript inline occorre invece applicare la classe `_js_pt_activate__inline`.

```Text
<script class="_js_pt_activate__inline" type="text/plain">….</script>
```

\*(1)

Nel caso in cui il `type` presente è `module`  si può aggiungere un secondo attributo `data-suppressedtype` con valore `module`.

```Text
<script class="_js_pt_activate" data-suppressedtype="module" type="text/plain" data-suppressedsrc="code-example.js">….</script>
```

### Tag img e iframe

Alcuni tag `img` e `iframe` potrebbero anche installare cookie.

In questi casi è necessario:

1. aggiungere la classe `_js_pt_activate`
2. assegnare il valore originario dell’attributo `src` a un nuovo attributo `data-suppressedsrc` 
3. assegnare all’attributo `src` il valore `//cdn.pubtech.ai/pubconsent/empty.html`.

Qui un esempio:

```Text
<iframe class="_js_pt_activate" width="560" height="315" src="//cdn.pubtech.ai/pubconsent/empty.html" data-suppressedsrc="https://www.youtube.com/embed/VZgtEU4B70o"></iframe>
```

### Specificare la categoria per script

Per attivare uno script solo se una categoria (o più) è stata abilitata dal visitatore è necessario specificare l’attributo `data-js-pt-categories` come nel seguente esempio:

:::hint{type="warning"}
Per questioni di leggibilità abbiamo cambiato `data-js-pt-purposes` in `data-js-pt-categories`in ogni caso entrambi sono supportati.
:::

```Text
<script class="_js_pt_activate" data-js-pt-categories="2,3" data-suppressedtype="module" type="text/plain" data-suppressedsrc="code-example.js">….</script>
```

La configurazione applicata nell’esempio, indica di attivare lo script solo se la categoria con id 2 e id 3 sono abilitate.

Ti ricordiamo che le finalità sono raggruppate in 5 categorie (strettamente necessari, interazioni e funzionalità semplici, esperienza migliorata, misurazione, targeting e pubblicità), ciascuna identificata da un id (1, 2, 3, 4, 5).

:::hint{type="info"}
Ti ricordiamo che la specifica dell'attributo è opzionale per risorse che rientrano solo nella categoria 1. Quindi se non specificato verranno attivati in ogni caso.
:::

1. Strettamente necessari (id `1`). Finalità incluse:
   - Salvataggio e gestione di backup
   - Hosting ed infrastruttura backend
   - Gestione di landing page e pagine di invito
   - Servizi di piattaforma e hosting
   - Protezione dallo SPAM
   - Ottimizzazione e distribuzione del traffico
   - Monitoraggio dell’infrastruttura
   - Gestione dei pagamenti
2. Interazioni e funzionalità semplici (id `2`). Finalità incluse:
   - Contattare l’Utente
   - Interazione con le piattaforme di live chat
   - Gestione di conferenze web e telefonia online
   - Gestione delle richieste di supporto e contatto
   - Interazione con le piattaforme di supporto e di feedback
   - Gestione dei tag
   - Registrazione ed autenticazione
   - Gestione dei database di Utenti
3. Esperienza migliorata (id `3`). Finalità incluse:
   - Commento dei contenuti
   - Interazione con piattaforme di raccolta dati e altre terze parti
   - Visualizzazione di contenuti da piattaforme esterne
   - Interazione con social network e piattaforme esterne
   - Interazione con le piattaforme per sondaggi online
   - Gestione dei feed RSS
   - Funzionalità sociali
4. Misurazione (id `4`). Finalità incluse:
   - Statistica
   - Beta testing
   - Test di performance di contenuti e funzionalità (A/B testing)
   - Heat mapping e registrazione sessioni
   - Gestione della raccolta dati e dei sondaggi online
5. Targeting e pubblicità (id `5`). Finalità incluse:
   - Pubblicità
   - Infrastruttura al servizio pubblicitario
   - Affiliazione commerciale
   - Gestione contatti e invio di messaggi
   - Remarketing e behavioral targeting

### Gestione dipendenze degli script

In alcuni casi, per attivare correttamente un tag bloccato è necessario attendere l’esecuzione di uno script principale.

Per gestire correttamente le dipendenze sono disponibili  due attributi `data-js-pt-wait-for` ed `data-js-pt-label`.

L’attributo `data-js-pt-label` deve essere utilizzato per identificare lo script principale. Il secondo attributo `data-js-pt-wait-for` serve ad identificare invece il codice che dipende dallo script principale (utilizzare un codice univoco).

Qui di seguito un esempio:

```Text
<script data-js-pt-categories="2" class="_js_pt_activate" data-suppressedsrc="/primary.js" data-suppressedtype="module" data-js-pt-label="foo" type="text/plain"></script>

  <script class="_js_pt_activate__inline" type="text/plain" data-js-pt-wait-for="foo">
    console.log(foo, "the global foo variable in primary.js");
  </script>
```

