orestbida / cookieconsent

:cookie: Simple cross-browser cookie-consent plugin written in vanilla js
https://playground.cookieconsent.orestbida.com/
MIT License
4k stars 410 forks source link

Revision does not change in cc_cookie #65

Closed davidecesarano closed 3 years ago

davidecesarano commented 3 years ago

Hello,

if I understand correctly, the revision is used to "signal" a change. Is it correct to say that if I change the "revision" parameter in the settings it will also change in the cookie? Although I have changed the revision parameter, the box always appears and if I click on "accept all" the "revision" value in the "cc_cookie" remains the old one.

const cookieconsent = initCookieConsent();
cookieconsent.run({
    revision: 4,
    page_scripts: true,
    force_consent: true,
    cookie_expiration: 365,
    current_lang : 'it',
    theme_css : 'path',
    gui_options: {
        consent_modal : {
            layout : 'bar',               // box/cloud/bar
            position : 'bottom left',     // bottom/top + left/right/center
            transition: 'zoom'             // zoom/slide
        },
        settings_modal : {
            layout : 'box',                 // box/bar
            // position : 'left',           // left/right
            transition: 'slide'             // zoom/slide
        }
      },
      languages: {
        it : {
            consent_modal : {
                title:  "Noi usiamo i cookie",
                description:  'Noi usiamo i cookie e altre tecniche di tracciamento per migliorare la tua esperienza di navigazione nel nostro sito, per mostrarti contenuti personalizzati e annunci mirati, per analizzare il traffico sul nostro sito e per capire da dove arrivano i nostri visitatori.',
                primary_btn: {
                    text: 'Accetta',
                    role: 'accept_all'  //'accept_selected' or 'accept_all'
                },
                secondary_btn: {
                    text : 'Personalizza',
                    role : 'settings'   //'settings' or 'accept_necessary'
                }
            },
            settings_modal : {
                title : 'Centro Preferenze Cookie',
                save_settings_btn : "Salva Impostazioni",
                accept_all_btn : "Accetta",
                reject_all_btn : "Rifiuta", // optional, [v.2.5.0 +]
                close_btn_label: "Chiudi",   
                blocks : [
                    {
                        title : "Utilizzo dei Cookies",
                        description: 'I cookie sono dei piccolissimi file di testo che vengono memorizzati nel tuo computer quando visiti un sito web. Noi usiamo i cookie per una varietà di scopi e per migliorare la tua esperienza online nel nostro sito web. Tu puoi cambiare le tue impostazioni e rifiutare che alcuni tipi di cookie vengano memorizzati sul tuo computer mentre stai navigando nel nostro sito web. Puoi anche rimuovere qualsiasi cookie già memorizzato nel tuo computer, ma ricorda che cancellare i cookie può impedirti di utilizzare alcune parti del nostro sito.',
                    }, {
                        title : "Cookie strettamente necessari",
                        description: 'I cookie necessari contribuiscono a rendere fruibile il sito web abilitandone funzionalità di base quali la navigazione sulle pagine e l\'accesso alle aree protette del sito. Il sito web non è in grado di funzionare correttamente senza questi cookie.',
                        toggle : {
                            value : 'necessary',
                            enabled : true,
                            readonly: true
                        }
                    }, {
                        title : "Cookie di tracciamento e prestazione",
                        description: 'I cookie di tracciamento e prestazione aiutano i proprietari del sito web a capire come i visitatori interagiscono con i siti raccogliendo e trasmettendo informazioni in forma anonima.',
                        toggle : {
                            value : 'analytics',
                            enabled : true,
                            readonly: false
                        }
                    }, {
                        title : "Cookie di targeting e pubblicità",
                        description: 'I cookie di targeting e pubblicità vengono utilizzati per tracciare i visitatori sui siti web. La finalità è quella di presentare annunci pubblicitari che siano rilevanti e coinvolgenti per il singolo utente e quindi di maggior valore per editori e inserzionisti di terze parti.',
                        toggle : {
                            value : 'marketing',
                            enabled : true,
                            readonly: false
                        }
                    }
                ]
            }
        }
    },
    onAccept: function(cookie) {
        if (cookieconsent.allowedCategory('analytics')) {
            gtag('consent', 'update', {
                'ad_storage': 'granted',
                'analytics_storage':'granted'
            });
        }
    },
    onChange: function() {
        if (cookieconsent.allowedCategory('analytics')) {
            gtag('consent', 'update', {
                'ad_storage': 'granted',
                'analytics_storage':'granted'
            });
        }
    }
});

When you refresh the page and "accept all", the revision property in "cc_cookie" does not change. Then, updating the page again, the box appears again.

PS Sorry for my English :)

orestbida commented 3 years ago

Hi @davidecesarano,

the plugin saves its changes after the execution of the onAccept/onChange method.

In your specific example — if I accept the cookie consent — the following code is executed:

gtag('consent', 'update', {
    'ad_storage': 'granted',
    'analytics_storage':'granted'
});

Which — on my end at least — throws the following error gtag is not defined, blocking the rest of the script. You can easily verify this if you try to comment the code block above. Make sure you are properly loading gtag.

If you have trouble configuring third party scripts, you can use an alternative/easier way of loading them, as showed in the second demo and here: #64

davidecesarano commented 3 years ago

Hi @orestbida,

thank you for reply.

gtag is defined. In the console I don't get any errors (ga is included in the head tag, I use google consent mode).

<script async src="https://www.googletagmanager.com/gtag/js?id=xxx"></script>
<script>
    window.dataLayer = window.dataLayer || [];
    function gtag(){dataLayer.push(arguments);}
    gtag('set', 'ads_data_redaction', true);
    gtag('consent', 'default', {
        'ad_storage': 'denied',
        'analytics_storage': 'denied',
        'wait_for_update': 500
    });
    gtag('js', new Date());
    gtag('config', 'xxx');
</script>
orestbida commented 3 years ago

Just re-tried it! Yes, there is indeed an issue with the revision option! Expect a fix very soon!