window.aftersell.cart.events.
S’abonner est un appel de configuration, donc c’est sûr en haut de votre script, sans besoin d’attendre ready().
Événements disponibles
S’abonner
events.on(event, handler) enregistre un gestionnaire et renvoie une fonction qui le désabonne :
events.once(event, handler): se déclenche une fois, puis se désabonne de lui-même.events.off(event, handler): supprime un gestionnaire spécifique.
Les deux règles
Ne modifiez pas le panier depuis cart_updated sans garde-fou
cart_updated déclenche à nouveau cart_updated. Si ce gestionnaire modifie à nouveau le panier, vous avez une boucle infinie. L’acheteur regarde son panier s’agiter pendant que la page bombarde Shopify.
Traitez la charge utile comme en lecture seule
registerLineTransform.
cart_loaded
cart_loaded est rejoué pour les abonnés tardifs. Si vous vous abonnez après que le panier a déjà été chargé, votre gestionnaire est appelé immédiatement avec le panier actuel. L’ordre d’abonnement n’a jamais d’importance, vous n’avez donc pas à vous soucier de savoir si votre script a devancé le panier.
cart_updated
item_added
{ item }, où item est la ligne du panier.
cart_loaded. Ajouter plusieurs produits distincts à la fois déclenche l’événement une fois par ligne.
item_removed
{ item }, la ligne telle qu’elle était juste avant de disparaître, vous pouvez donc encore lire ses key, variantId et title.
item_added : réduire une quantité sans atteindre zéro n’est pas une suppression.
cart_opened et cart_closed
checkout
Écouter depuis l’extérieur du SDK
CustomEvent DOM sur window, vous pouvez donc écouter sans toucher à window.aftersell.cart. C’est utile depuis un fichier de thème, une application tierce ou un script qui se charge indépendamment du panier.
Attention à la convention de nommage : le bus utilise le
snake_case, les événements DOM utilisent le kebab-case derrière un préfixe aftersell:cart:.
event.detail et correspond à l’objet cart. Les événements sont émis sur window, donc un écouteur n’importe où sur la page les reçoit. Le panier est rendu dans un shadow root, mais la frontière du shadow n’est jamais sur le chemin de l’événement. Chaque émission clone la charge utile, donc un écouteur qui mute event.detail ne peut affecter personne d’autre, et un écouteur qui lève une exception ne peut pas perturber le SDK.
Événements de panier standard Shopify
document chaque fois qu’il modifie le panier, afin que le code de thème et les autres applications puissent réagir aux mutations d’Aftersell de la même manière qu’ils réagissent à celles du thème :
Chaque événement porte aussi une
promise qu’Aftersell règle lorsque l’écriture sous-jacente aboutit, conformément au standard de Shopify : attendez-la avec await, ne la résolvez pas vous-même. Ces événements sont émis sur document et remontent par bubbling, donc un écouteur sur window les reçoit aussi.
Pour aller plus loin
- Objet cart : la forme complète des charges utiles ci-dessus.
- Actions : comment modifier le panier depuis un gestionnaire.
- Hooks : pour modifier le rendu du panier, plutôt que d’y réagir.
- Cas d’usage : suivi analytique, cadeaux gratuits et autres exemples complets.