Passer au contenu principal
La plateforme Kameleoon propose une Activation API basée sur JavaScript pour récupérer des données (telles que la géolocalisation du visiteur) et modifier le comportement du moteur (comme l’assignation manuelle de variations). Cependant, les développeurs doivent s’assurer que le moteur Kameleoon est chargé avant d’accéder à l’Activation API. Cette exigence complique l’intégration directe de code JavaScript dans les fichiers HTML. La Command Queue de Kameleoon permet l’exécution différée de commandes, à l’instar de Google Analytics. Au lieu d’appeler l’Activation API via l’objet Kameleoon.API, passez les commandes et fonctions à l’objet kameleoonQueue. Le moteur exécute ces commandes immédiatement s’il est chargé ; sinon, il les met en file d’attente pour exécution lorsqu’il est prêt.

Utilisation et description de l’objet Command Queue

Pour utiliser l’objet kameleoonQueue, exécutez d’abord le code d’initialisation suivant. Le tag d’installation Kameleoon inclut généralement ce code en haut du fichier HTML, après la balise <head> d’ouverture. Dans ce cas, aucune action supplémentaire n’est requise. Cependant, si vous utilisez une configuration personnalisée (par exemple, le chargement de Kameleoon via un Tag Manager), initialisez la file d’attente avant d’ajouter du code personnalisé.
window.kameleoonQueue = window.kameleoonQueue || [];
Pendant le chargement du fichier d’application Kameleoon, kameleoonQueue agit comme un tableau JavaScript standard qui accepte des commandes via la méthode push(). Après le chargement, le moteur traite le tableau et exécute les commandes dans l’ordre. Le moteur remplace ensuite le tableau par un objet personnalisé dont la méthode push() exécute les commandes immédiatement.

Syntaxe

Passez soit un tableau, soit une fonction anonyme à la méthode push().
kameleoonQueue.push(['Kameleoon.API.Events.trigger', 'myCustomEvent']);
kameleoonQueue.push(['Events.trigger', 'anotherEvent']);
Lorsque vous passez un tableau, le premier objet représente le nom de la méthode de l’API Kameleoon (sous forme de chaîne), et les objets suivants représentent les arguments de la méthode.
Utilisez soit le nom complet de la méthode (par exemple, Kameleoon.API.Core.enableLegalConsent), soit le nom court (par exemple, Core.enableLegalConsent). Les arguments supplémentaires sont facultatifs.
Passez directement une fonction anonyme comme argument. Kameleoon utilise la fonction comme callback lorsqu’il est prêt à traiter.
kameleoonQueue.push(function() {
  const experimentID = 1;
  const variationID = 3;
  Kameleoon.API.Experiments.assignVariation(experimentID, variationID);
});
La command queue fonctionne également dans le code HTML, comme illustré dans l’exemple ci-dessous. Initialisez kameleoonQueue avant que le navigateur ne rencontre l’élément HTML ciblé pour garantir le suivi des clics, même si le moteur n’a pas été chargé.
<button onclick="kameleoonQueue.push(['Goals.processConversion', 42]);">
  Action Button with Kameleoon goalID = 42
</button>
Par défaut, Kameleoon exécute les commandes en file d’attente lorsque la configuration (campagnes, objectifs, segments, etc.) est prête et après l’exécution du script personnalisé global.Utilisez l’argument level: "IMMEDIATE" lors de l’ajout d’une commande pour l’exécuter immédiatement, sans attendre le traitement de la configuration. Cela est utile pour le code requis avant que Kameleoon n’instancie les fonctions.Voici un exemple d’utilisation de l’argument level: "IMMEDIATE" :
function callback = () => {
 {... any code to run before Kameleoon triggers any campaign code}   
};
window.kameleoonQueue.push({
	level: "IMMEDIATE",
	command: callback
});
Dans cet exemple, la fonction callback s’exécute immédiatement, indépendamment du traitement de la configuration.Utilisez l’argument level: "IMMEDIATE" pour remplacer les fonctions internes de Kameleoon. La redéfinition de fonction standard échoue si le moteur charge et exécute d’abord la version originale. Le niveau IMMEDIATE garantit que la fonction personnalisée s’exécute avant que le moteur ne charge sa propre version.