Warteschlange und Verlauf

Das adobeDataLayer-Array hat zwei Rollen. Bevor die Adobe Client Data Layer-Bibliothek (ACDL) geladen wird, handelt es sich um eine Warteschlange von Elementen, die darauf warten, verarbeitet zu werden. Nachdem die Bibliothek geladen wurde, ist dies ein Verlauf der Daten und Ereignisse, die gepusht wurden.

Vor dem Laden der ACDL: eine Warteschlange queue

Bis zum Laden der Bibliothek ist adobeDataLayer ein einfaches JavaScript-Array und push() ist die standardmäßige Array-Methode. Jeder Push fügt das Element am Ende des Arrays hinzu und tut nichts anderes. Aus diesem Grund kann jedes Skript Daten, Ereignisse und Funktionen jederzeit per Push übertragen, auch wenn die Bibliothek noch nicht heruntergeladen wurde.

Beim Laden der Bibliothek geschieht Folgendes:

  1. Entfernt alle Elemente in der Warteschlange aus dem Array.
  2. Fügt dem gleichen Array die ACDL-Methoden hinzu, einschließlich der eigenen Version von push().
  3. Verschiebt die Elemente in der Warteschlange nacheinander in der ursprünglichen Reihenfolge. Jedes Element wird verarbeitet, als ob es nach dem Laden der Bibliothek gepusht worden wäre.

Das globale adobeDataLayer-Objekt bleibt durchgängig im selben Array. Verweise darauf, dass zuvor gespeicherte Skripte weiterhin funktionieren.

Code ausführen, wenn ACDL bereit ist ready

Es wird nur garantiert, dass push() im Array vorhanden ist, da die Bibliothek möglicherweise noch nicht geladen wurde. Um andere Methoden aufzurufen, z. B. getState() oder addEventListener(), drücken Sie eine Funktion:

window.adobeDataLayer = window.adobeDataLayer || [];
window.adobeDataLayer.push(function(dl) {
  console.log(dl.getState());
  dl.addEventListener("click", handleClick);
});

Wenn ACDL bereits geladen wurde, wird die Funktion sofort aufgerufen. Andernfalls wartet die Funktion in der Warteschlange und wird beim Laden der Bibliothek ausgeführt, nachdem die Elemente vor ihr gepusht wurden. Die Funktion empfängt die Datenschicht als Argument und als this.

IMPORTANT
Wenn eine Funktion in der Warteschlange beim Laden der Bibliothek einen Fehler ausgibt, stoppt ACDL die Verarbeitung der Warteschlange. Elemente, die nach dieser Funktion in die Warteschlange gestellt wurden, gehen verloren. Fehler in den von Ihnen gepushten Funktionen erkennen.

Nach dem Laden von ACDL: ein Verlauf history

Nachdem die Bibliothek geladen wurde, speichert das -Array das, was gepusht wurde. ACDL fügt einige Arten von Elementen zum Array hinzu und entfernt andere:

Push-Element
Im Array behalten
Datenobjekt
Ja
Ereignisobjekt, einschließlich seiner event und eventInfo
Ja
Funktion
Nein. ACDL ruft es an und hält es nicht.
Ungültiges Element, z. B. eine Zeichenfolge oder eine Zahl
Nein. ACDL protokolliert einen Fehler und speichert ihn nicht.

Der Verlauf enthält die Objekte, die Sie gepusht haben, nicht Kopien davon. Wenn Sie ein Objekt nach dem Pushen ändern, wird die Änderung im Verlauf angezeigt, der berechnete Status jedoch nicht.

Sie können den Verlauf in der Entwicklerkonsole Ihres Browsers überprüfen, indem Sie adobeDataLayer eingeben und das Array erweitern. Die Anzahl der Elemente im Verlauf ist adobeDataLayer.length.

Reihenfolge der von Listenern gepushten Elemente nested-order

Wenn ein Ereignis-Listener ein Element per Push überträgt, verarbeitet ACDL dieses Element, bevor die Verarbeitung des Elements, das den Listener ausgelöst hat, abgeschlossen ist. Daher erscheint das Element, das der Listener gepusht hat, im Verlauf vor dem Element, das es ausgelöst hat.

Verwendung des Verlaufs durch Listener replay

Wenn Sie einen Listener mit dem past oder all​ Bereich hinzufügen, ruft ACDL ihn sofort für jedes übereinstimmende Element im Verlauf in der richtigen Reihenfolge auf. Bei dieser Wiederholung können Skripte, die zu spät geladen werden, z. B. eine Tag-Bibliothek, auf Ereignisse reagieren, die vor dem Laden aufgetreten sind.

Die Wiederholung verwendet die Elemente im Array, wenn der Listener hinzugefügt wird. Wenn der Verlauf gelöscht wurde, werden die gelöschten Elemente nicht wiederholt.

Array nicht direkt ändern modify

Fügen Sie Elemente nur mit push() zur Datenschicht hinzu. Verwenden Sie keine anderen JavaScript-Array-Methoden, die das Array ändern, z. B. pop(), shift(), unshift(), splice(), sort(), reverse(), fill() oder copyWithin(). Diese Methoden umgehen ACDL, sodass der berechnete Status und die Listener die Änderung nicht widerspiegeln und Wiederholungen für neue Listener inkonsistent werden.

Sie können das Array mit Methoden lesen, die es nicht ändern, z. B. filter() oder find().

Verlauf löschen clear

Mit jedem Push, den ACDL speichert, wird ein Element zum Array hinzugefügt. Auf Seiten, die lange Zeit offen bleiben, wie z. B. Einzelseitenanwendungen, wächst der Verlauf weiter. Sie können sie in einer natürlichen Pause löschen, z. B. nach jeder virtuellen Seitenansicht.

Durch Löschen des Verlaufs ändert sich der berechnete Status nicht und Listener werden nicht entfernt. Dies wirkt sich nur darauf aus, welche Elemente für Listener wiederholt werden, die später mit dem past- oder all hinzugefügt werden.

  • Wenn Sie Tags verwenden verwenden Sie die Aktion Datenschichtverlauf löschen in der ACDL-Tag-Erweiterung. Er kann einen Schnappschuss des aktuellen berechneten Status im Array beibehalten oder das Array leer lassen.

  • Legen Sie in Ihrem die Länge des Arrays auf 0 fest, nachdem ACDL geladen wurde:

    code language-js
    window.adobeDataLayer.push(function(dl) {
      dl.length = 0;
    });
    
recommendation-more-help
experience-platform-help-collection