typescript - Adăugarea Google Analytics cu manager de consimțământ pe un site SvelteKit


Trebuie să adaug Google Analytics pe un site SvelteKit. Instrucțiunile de la Google spun că scriptul de mai jos ar trebui adăugat în tag-ul <head>, așa că m-am gândit că aș putea să-l adaug pur și simplu în app.html. Problema este că trebuie să folosesc Modul de Consimțământ pentru a respecta reglementările GDPR. Pentru a face acest lucru, trebuie să pot citi și scrie într-un fel de variabilă pentru a activa și dezactiva analiza.

Din câte pot să-mi dau seama, nu pot accesa nicio variabilă din interiorul etichetei <head>. Am încercat, de asemenea, să adaug același cod într-o etichetă <svelte:head> în __layout.svelte, dar se pare că nu pot accesa variabile nici acolo.

Plănuiesc să urmăresc consimțământul pentru cookie-uri folosind un magazin și să păstrez acea valoare în stocarea locală, dar sunt deschis și altor soluții.

Iată codul care ar trebui adăugat la tag-ul <head>:

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-H5XGB0JC8S"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-H5XGB0JC8S');
</script>

Iată codul care trebuie adăugat pentru a dezactiva analizele:

gtag('consent', 'default', {
  analytics_storage: 'denied',
  ad_storage: 'denied'
});

Și aici este codul pentru a apela pentru a actualiza o valoare:

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

Presupun că ultimul fragment de cod ar trebui apelat când este apăsat butonul de acceptare, dar dacă apelez gtag din altă parte decât aceeași locație ca primul fragment de cod, primesc un avertisment care spune că funcția nu este definită.

Ar trebui să adaug codul în altă parte, sau ar trebui să fie făcut într-un alt mod?

Poate ar trebui să menționez că folosesc și TypeScript.