Risolvere i problemi relativi a Adobe Client Data Layer

Utilizzare questa pagina per diagnosticare i problemi più comuni con Adobe Client Data Layer (ACDL). La maggior parte dei controlli utilizza la console per sviluppatori del browser.

Ispezionare il livello dati inspect

Esegui i seguenti comandi nella console:

Comando
Risultato
adobeDataLayer.version
Versione ACDL, ad esempio "3.0.1". Se è undefined, ACDL non è stato caricato.
adobeDataLayer.getState()
stato calcolato.
adobeDataLayer
history dei dati e degli oggetti evento, nell’ordine in cui sono stati elaborati.

Per visualizzare gli eventi nel momento in cui si verificano, aggiungere un listener temporaneo:

adobeDataLayer.addEventListener("adobeDataLayer:event", function(event) {
  console.log("ACDL event:", event.event, event);
}, { scope: "future" });

Messaggi della console console-messages

Messaggio
Causa e soluzione
The following item cannot be handled by the data layer because it does not have a valid format: ...
È stato inviato un valore che non è un oggetto normale o una funzione, ad esempio una stringa o un array. Trova il codice che invia il valore mostrato nel messaggio. Vedi Elementi non validi.
Adobe Client Data Layer v... has already been imported/initialized on this page. You may be erroneously loading it a second time.
La libreria è stata caricata più volte. La prima copia continua a funzionare. Rimuovi la copia in più. Vedi Caricare la libreria una sola volta.
TypeError: adobeDataLayer.getState is not a function (o addEventListener, removeEventListener)
Codice denominato metodo ACDL prima del caricamento della libreria. Chiamalo da una funzione che esegui invece il push. Vedi Chiamare i metodi in modo sicuro.
ReferenceError: structuredClone is not defined
Il browser è più vecchio di quanto supporti ACDL 3.x. Consulta Requisiti del browser.
TypeError: Cannot read properties of null (reading 'event')
Codice inviato null o undefined.
RangeError: Maximum call stack size exceeded
Un ascoltatore spinge qualcosa che si attiva da solo. Vedere Evitare cicli continui.

La formulazione dei messaggi di errore di JavaScript varia leggermente da un browser all’altro. Ad esempio, Safari segnala ReferenceError: Can't find variable: structuredClone.

ACDL non si carica not-loaded

Se adobeDataLayer.version è undefined, verificare quanto segue:

  • La libreria non si trova nella pagina. Controlla il pannello di rete per adobe-client-data-layer.min.js o per la libreria tag se l’estensione tag 2} carica ACDL. ​Assicurati che l’informativa sulla sicurezza dei contenuti consenta lo script.
  • adobeDataLayernon è un array. Se un altro script imposta window.adobeDataLayer su un elemento diverso da un array prima del caricamento di ACDL, ACDL non si collega ad esso.
  • Uno script ha sostituito l’array. Il codice come window.adobeDataLayer = []; sostituisce il livello dati con un nuovo array vuoto, che perde i metodi ACDL, lo stato calcolato e tutti i listener. Usa sempre window.adobeDataLayer = window.adobeDataLayer || [];. Consulta Creare l’array del livello dati.
  • Errore restituito da una funzione in coda. Se una funzione che è stata inviata prima del caricamento di ACDL genera un errore, l’errore viene visualizzato nella console e gli elementi che erano stati messi in coda dopo tale funzione vengono persi. Rileva gli errori all’interno delle funzioni inviate.

Un listener non viene eseguito listener-not-called

Verifica quanto segue:

  • Il nome dell’evento non corrisponde. I nomi degli eventi fanno distinzione tra maiuscole e minuscole e devono corrispondere esattamente, compresi gli spazi.
  • L’evento è stato inviato prima dell’aggiunta del listener e il listener utilizza l’ambito future. Utilizza l’ambito predefinito all. Vedi Ambito.
  • La cronologia è stata cancellata prima dell’aggiunta del listener, quindi non c’è nulla da riprodurre. Vedere Cancella cronologia.
  • L’opzione path esclude il push. Un listener con un percorso viene eseguito solo per i push che includono tale percorso. Vedi Percorso.
  • Il listener non è mai stato aggiunto. Se l’argomento listener non è una funzione o l’ambito non è valido, ACDL non aggiunge il listener. Le chiavi come on e handler vengono invece visualizzate in adobeDataLayer.getState().
  • La stessa funzione è già registrata per l’evento. ACDL ignora la seconda registrazione, anche con opzioni diverse.
  • Un listener precedente ha restituito un errore per lo stesso push, che arresta i listener rimanenti. Verifica la presenza di errori nella console.
  • Il push non è un evento. Un oggetto il cui valore event è mancante, vuoto o non una stringa viene considerato come dati. Attiva adobeDataLayer:change listener, non listener di eventi.

Un listener viene eseguito più spesso del previsto listener-called-too-often

  • Riproduce gli eventi passati. Con l’ambito all predefinito, viene eseguito un nuovo listener per gli eventi corrispondenti già presenti nella cronologia. Si tratta di un comportamento previsto. Utilizzare l’ambito future se gli eventi precedenti sono già stati gestiti.
  • È stato aggiunto più di una volta. Codice che viene eseguito ripetutamente e trasmette una nuova funzione anonima ogni volta aggiunge un nuovo listener. Utilizza una funzione denominata. Vedere Utilizzare funzioni con nome.
  • Utilizza un percorso. Un listener con un percorso viene eseguito per ogni push che include il percorso, anche se il valore non è stato modificato.

Dati mancanti o errati nello stato calcolato state-issues

  • Il valore è stato inviato come event o eventInfo. Queste chiavi non sono memorizzate nello stato calcolato. Invia dati in altre chiavi.
  • Un array ha perso elementi. Quando si preme un array, l’intero array viene sostituito. Premere l’array completo. Vedi Array.
  • Un oggetto non ha sostituito una stringa, un numero o un valore booleano. Eliminare prima la chiave premendo null, quindi inviare l’oggetto tramite push. Vedere Modificare il tipo di un valore.
  • Una data o una funzione è diventata un oggetto vuoto. Memorizza le date come stringhe o numeri. Vedi Tipi di valore.
  • Una modifica apportata al risultato di getState() non ha avuto effetto. getState() restituisce una copia. Effettua l’invio della modifica.
  • getState()con un percorso restituisce undefined. Controlla l’ortografia di ogni chiave nel percorso. Utilizzare i punti per gli indici di matrice, ad esempio items.0.sku, non le parentesi. Vedere Ottenere un valore in un percorso.

Elementi mancanti nella cronologia history-issues

  • Le funzioni e gli elementi non validi non vengono conservati. Vengono conservati solo gli oggetti dati e gli oggetti evento. Vedere Dopo il caricamento di ACDL: una cronologia.
  • Un listener ha restituito un errore. Quando un listener genera un errore, l’elemento che lo ha attivato aggiorna lo stato calcolato ma non viene aggiunto alla cronologia.
  • Una chiamata push() conteneva diversi tipi di elementi. Effettua il push di ogni elemento in una chiamata separata. Vedi Invia un elemento per chiamata.
  • La cronologia è stata cancellata, ad esempio dall’azione Cancella cronologia livello dati nell’estensione tag.
recommendation-more-help
experience-platform-help-collection