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.versionVersione ACDL, ad esempio
"3.0.1". Se è undefined, ACDL non è stato caricato.adobeDataLayer.getState()adobeDataLayerhistory 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 definedIl 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 exceededUn 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.jso 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 impostawindow.adobeDataLayersu 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 semprewindow.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 predefinitoall. Vedi Ambito. - La cronologia è stata cancellata prima dell’aggiunta del listener, quindi non c’è nulla da riprodurre. Vedere Cancella cronologia.
- L’opzione
pathesclude 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
onehandlervengono invece visualizzate inadobeDataLayer.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. AttivaadobeDataLayer:changelistener, non listener di eventi.
Un listener viene eseguito più spesso del previsto listener-called-too-often
- Riproduce gli eventi passati. Con l’ambito
allpredefinito, viene eseguito un nuovo listener per gli eventi corrispondenti già presenti nella cronologia. Si tratta di un comportamento previsto. Utilizzare l’ambitofuturese 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
eventoeventInfo. 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 restituisceundefined. Controlla l’ortografia di ogni chiave nel percorso. Utilizzare i punti per gli indici di matrice, ad esempioitems.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