Événements

Les événements indiquent à d’autres scripts qu’un événement s’est produit sur la page, tel qu’une page vue, un clic ou un envoi de formulaire. Vous poussez un événement vers la couche de données client (ACDL) Adobe en tant qu’objet avec une clé event. Les scripts qui ont enregistré un écouteur d’événement pour ce nom d’événement sont appelés.

Objets d’événement event-objects

Un objet événement possède les clés suivantes :

Clé
Requis
Description
event
Oui
Chaîne non vide qui nomme l’événement. Les noms des événements sont sensibles à la casse : cart add et Cart add sont des événements différents.
eventInfo
Non
Toute information supplémentaire sur cette occurrence de l’événement, par exemple une référence au composant sur lequel le visiteur a cliqué. L’ACDL transmet eventInfo aux écouteurs, mais ne le stocke pas dans l’état calculé.
Toute autre clé
Non
Données à fusionner dans l’état calculé, en utilisant les mêmes règles qu’un push de données.
window.adobeDataLayer = window.adobeDataLayer || [];

// An event with no data
window.adobeDataLayer.push({ event: "page loaded" });

// An event with extra information for listeners
window.adobeDataLayer.push({
  event: "click",
  eventInfo: { reference: "component.hero-1" }
});

// An event that also updates the computed state
window.adobeDataLayer.push({
  event: "cart add",
  eventInfo: { sku: "a-100" },
  cart: { itemCount: 3 }
});

Après ces notifications push, l’état calculé est { cart: { itemCount: 3 } }. Les clés event et eventInfo ne font pas partie de l’état calculé, mais les objets d’événement restent dans le tableau de la couche de données en tant que historique.

Si la clé event est manquante, vide ou n’est pas une chaîne, ACDL traite l’objet comme un push de données. Aucun écouteur d’événement n’est appelé et l’état calculé n’inclut pas les clés event ou eventInfo.

TIP
Choisissez une convention de nommage pour les événements, tels que noun verb (cart add, form submit) ou object.action (cart.add, form.submit), et utilisez-la partout. Comme les noms sont sensibles à la casse, les noms incohérents sont une raison courante pour laquelle les écouteurs ne s’exécutent pas.

Événements intégrés built-in-events

Outre l’événement nommé, l’ACDL déclenche deux événements intégrés :

  • adobeDataLayer:change : déclenché lorsqu’une notification push modifie l’état calculé. Les notifications push de données et les notifications push d’événement contenant des données les déclenchent.
  • adobeDataLayer:event : déclenché pour chaque notification push d’événement, quel que soit son nom.

Le tableau suivant indique les événements déclenchés par chaque type de notification push :

Notification push
adobeDataLayer:event
adobeDataLayer:change
Événement nommé
Données uniquement, telles que { page: { title: "Home" } }
Non
Oui
Non
Événement uniquement, tel que { event: "click" }
Oui
Non
Oui
Événement et eventInfo, par exemple { event: "click", eventInfo: {...} }
Oui
Non
Oui
Événement et données, comme { event: "cart add", cart: {...} }
Oui
Oui
Oui

Lorsqu’une notification push déclenche plusieurs événements, l’ACDL appelle les écouteurs dans l’ordre suivant : adobeDataLayer:event, puis adobeDataLayer:change, puis l’événement nommé.

Ce que les auditeurs reçoivent listener-arguments

L’ACDL appelle chaque écouteur avec un argument : une copie de l’objet complet qui a été envoyé, y compris event, eventInfo et toutes les données.

window.adobeDataLayer.push(function(dl) {
  dl.addEventListener("cart add", function(event) {
    console.log(event.eventInfo.sku);       // "a-100"
    console.log(event.cart.itemCount);      // 3
    console.log(dl.getState("cart"));       // { itemCount: 3 }
  });
});

Les détails suivants s’appliquent à chaque écouteur :

  • L’état calculé est déjà mis à jour. Lorsqu’un écouteur s’exécute, l’état calculé inclut déjà les données de la notification push qui l’a déclenché.
  • L’argument est une copie. Sa modification ne modifie pas la couche de données ou l’objet qui a été transmis.
  • thisest la couche de données. Dans une fonction d’écouteur, this fait référence au tableau adobeDataLayer.
  • Les listeners s’exécutent de manière synchrone. ACDL appelle chaque écouteur avant le retour de push(). Veillez à ce que les auditeurs soient courts et ne ralentissez pas leur travail.

Écouter les événements passés et futurs scope

Par défaut, un nouveau listener s’exécute pour faire correspondre les événements qui se trouvent déjà dans le tableau de couche de données et pour faire correspondre les événements qui sont transmis ultérieurement. Cela signifie qu’un script peut ajouter son écouteur à tout moment sans ignorer d’événements qui se sont produits précédemment, comme une page vue qui a été envoyée avant le chargement de votre bibliothèque de balises.

Vous pouvez modifier ce comportement à l’aide de l’option scope pour n’écouter que les événements passés ou futurs. Pour savoir comment ACDL conserve les événements passés, consultez File d’attente et historique.

Éviter les boucles sans fin loops

Un écouteur peut envoyer des notifications push à la couche de données. Processus ACDL qui effectuent une notification push immédiatement, avant le retour du listener. Si un écouteur envoie quelque chose qui déclenche à nouveau le même écouteur, les appels ne se terminent jamais tant que le navigateur ne renvoie pas une erreur de dépassement de capacité de la pile, telle que RangeError: Maximum call stack size exceeded. Par exemple, un écouteur adobeDataLayer:change qui transmet des données se déclenche lui-même.

Envoi depuis un listener uniquement lorsque le nouveau push ne peut pas déclencher le même listener.

recommendation-more-help
experience-platform-help-collection