Zum Hauptinhalt springen
Die Kameleoon-Plattform bietet eine JavaScript-basierte Activation API zum Abrufen von Daten (z. B. Geolokalisierung von Besuchern) und zum Ändern des Engine-Verhaltens (z. B. manuelle Zuweisung von Variationen). Entwickler müssen jedoch sicherstellen, dass die Kameleoon-Engine geladen wird, bevor sie auf die Activation API zugreifen. Diese Anforderung erschwert das direkte Einbetten von JavaScript-Code in HTML-Dateien. Die Kameleoon Command Queue ermöglicht die verzögerte Befehlsausführung, ähnlich wie Google Analytics. Anstatt die Activation API über das Objekt Kameleoon.API aufzurufen, übergeben Sie Befehle und Funktionen an das Objekt kameleoonQueue. Die Engine führt diese Befehle sofort aus, wenn sie geladen ist; andernfalls stellt sie sie zur Ausführung in eine Warteschlange, sobald sie bereit ist.

Verwendung und Beschreibung des Command Queue-Objekts

Um das kameleoonQueue-Objekt zu verwenden, führen Sie zunächst den folgenden Initialisierungscode aus. Das Kameleoon-Installations-Tag enthält diesen Code in der Regel am Anfang der HTML-Datei nach dem öffnenden <head>-Tag. In diesem Fall ist keine weitere Aktion erforderlich. Wenn Sie jedoch eine benutzerdefinierte Einrichtung verwenden (z. B. das Laden von Kameleoon über einen Tag Manager), initialisieren Sie die Warteschlange, bevor Sie benutzerdefinierten Code hinzufügen.
window.kameleoonQueue = window.kameleoonQueue || [];
Während des Ladens der Kameleoon-Anwendungsdatei fungiert kameleoonQueue als Standard-JavaScript-Array, das Befehle über die Methode push() akzeptiert. Nach dem Laden verarbeitet die Engine das Array und führt die Befehle der Reihe nach aus. Die Engine ersetzt dann das Array durch ein benutzerdefiniertes Objekt, dessen push()-Methode Befehle sofort ausführt.

Syntax

Übergeben Sie entweder ein Array oder eine anonyme Funktion an die Methode push().
kameleoonQueue.push(['Kameleoon.API.Events.trigger', 'myCustomEvent']);
kameleoonQueue.push(['Events.trigger', 'anotherEvent']);
Beim Übergeben eines Arrays stellt das erste Objekt den Namen der Kameleoon API-Methode (als String) dar, und die nachfolgenden Objekte stellen die Methodenargumente dar.
Verwenden Sie entweder den vollständigen Methodennamen (z. B. Kameleoon.API.Core.enableLegalConsent) oder den kurzen Namen (z. B. Core.enableLegalConsent). Zusätzliche Argumente sind optional.
Übergeben Sie eine anonyme Funktion direkt als Argument. Kameleoon verwendet die Funktion als Callback, wenn sie zur Verarbeitung bereit ist.
kameleoonQueue.push(function() {
  const experimentID = 1;
  const variationID = 3;
  Kameleoon.API.Experiments.assignVariation(experimentID, variationID);
});
Die Command Queue funktioniert auch innerhalb von HTML-Code, wie im folgenden Beispiel gezeigt. Initialisieren Sie kameleoonQueue, bevor der Browser auf das anvisierte HTML-Element trifft, um die Klick-Verfolgung zu gewährleisten, auch wenn die Engine noch nicht geladen ist.
<button onclick="kameleoonQueue.push(['Goals.processConversion', 42]);">
  Action Button with Kameleoon goalID = 42
</button>
Standardmäßig führt Kameleoon Befehle aus der Warteschlange aus, wenn die Konfiguration (Kampagnen, Ziele, Segmente usw.) bereit ist und nachdem das globale benutzerdefinierte Skript ausgeführt wurde.Verwenden Sie das Argument level: "IMMEDIATE" beim Pushen eines Befehls, um ihn sofort auszuführen, ohne auf die Konfigurationsverarbeitung zu warten. Dies ist nützlich für Code, der erforderlich ist, bevor Kameleoon Funktionen instanziiert.Hier ist ein Beispiel für die Verwendung des Arguments level: "IMMEDIATE":
function callback = () => {
 {... any code to run before Kameleoon triggers any campaign code}   
};
window.kameleoonQueue.push({
	level: "IMMEDIATE",
	command: callback
});
In diesem Beispiel wird die callback-Funktion sofort ausgeführt, unabhängig von der Konfigurationsverarbeitung.Verwenden Sie das Argument level: "IMMEDIATE", um interne Kameleoon-Funktionen zu überschreiben. Die Standard-Funktionsneudefinition schlägt fehl, wenn die Engine zuerst die Originalversion lädt und ausführt. Die Stufe IMMEDIATE stellt sicher, dass die benutzerdefinierte Funktion ausgeführt wird, bevor die Engine ihre eigene Version lädt.