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:
- Entfernt alle Elemente in der Warteschlange aus dem Array.
- Fügt dem gleichen Array die ACDL-Methoden hinzu, einschließlich der eigenen Version von
push(). - 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.
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:
event und eventInfoDer 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
0fest, nachdem ACDL geladen wurde:code language-js window.adobeDataLayer.push(function(dl) { dl.length = 0; });