Cette fonctionnalité convient mieux à ceux qui ont une expérience en développement. Si vous n’êtes pas à l’aise avec le DOM ou l’encapsulation Shadow DOM, il est judicieux de faire appel à un développeur ou de consulter des ressources en ligne sur les Web Components et les fondamentaux du Shadow DOM.
Limitation des sélecteurs standard
Les sélecteurs CSS standard ou les méthodes JavaScript commequerySelector() ou $() ne fonctionneront pas sur les éléments à l’intérieur d’un Shadow DOM. Ces éléments sont cachés de la page principale, ce qui signifie :
- Vous ne pouvez pas cibler les éléments à l’intérieur d’un Shadow DOM en utilisant les méthodes de sélection habituelles dans le Graphic editor de Kameleoon.
- Cibler ces éléments en utilisant des sélecteurs CSS traditionnels ou de style jQuery dans votre expérience peut échouer.
- Toutes les modifications (comme les changements de texte, les mises à jour de style ou l’insertion de contenu) peuvent ne pas s’appliquer sans étapes spéciales pour franchir la frontière Shadow DOM.
Travailler avec Shadow DOM dans le Graphic editor
Dans la plupart des cas, les utilisateurs peuvent sélectionner directement les éléments à l’intérieur d’un shadow root depuis la zone d’aperçu du Graphic editor de Kameleoon.Quand le champ supplémentaire « Shadow root path » apparaît
Dans certains cas, lorsque vous tentez de sélectionner ou de modifier un élément à l’intérieur d’un Shadow DOM à l’aide du Graphic editor de Kameleoon, vous pouvez voir un champ de saisie supplémentaire intitulé Shadow root path. Ce champ apparaît lorsque Kameleoon détecte que l’élément cible existe dans une arborescence shadow et ne peut pas être accédé via des sélecteurs standard. Le Shadow root path vous permet de définir un chemin spécifique à travers les couches Shadow DOM imbriquées afin que Kameleoon puisse atteindre et modifier l’élément lors de l’exécution de l’expérience. Connexion mock : le Graphic editor utilise ce chemin pour « simuler » la connexion entre le DOM principal et l’élément à l’intérieur du Shadow DOM, ce qui vous permet de modifier visuellement et de prévisualiser les changements comme si l’élément faisait partie de la structure normale de la page.Exemples
Cibler un bouton à l’intérieur d’un shadow root
Dans le Graphic editor de Kameleoon, vous pouvez cibler les éléments à l’intérieur d’un shadow root :- Directement dans la zone d’aperçu : si l’élément est accessible, vous pouvez le sélectionner dans l’aperçu de l’éditeur, comme n’importe quel élément standard.
- À l’aide de « Edit selector » : pour des structures plus complexes, vous pouvez construire manuellement le chemin de sélecteur à l’aide du champ de saisie Edit selector. Utilisez le séparateur
::SHADOW-ROOT::pour indiquer une étape dans le shadow root.
Inspecter le Shadow DOM dans les DevTools
- Cliquez avec le bouton droit sur l’élément > Inspect.
- Dans le panneau Elements, recherchez
#shadow-root (open)sous l’élément personnalisé. - Développez-le pour afficher les éléments internes.
Indices visuels ou libellés dans l’interface
Lorsque vous travaillez avec des pages web qui utilisent le Shadow DOM, le Graphic editor de Kameleoon fournit plusieurs indicateurs visuels pour vous aider à identifier quand les éléments font partie d’un shadow root.#shadow-root dans le panneau Elements

#shadow-root dans leur sélecteur CSS, ce qui indique que l’élément est encapsulé et ne fait pas partie de l’arborescence DOM principale.
Champ « Shadow root path » dans le panneau de sélecteur

::SHADOW-ROOT::.
Comment écrire un chemin de sélecteur pour les éléments Shadow DOM
Lorsque vous travaillez avec des éléments Shadow DOM dans le Graphic editor de Kameleoon, un sélecteur CSS standard n’est pas suffisant. Vous devez définir un chemin de sélecteur qui inclut le shadow root. Pour cibler un élément à l’intérieur d’un shadow root à un seul niveau, utilisez le séparateur::SHADOW-ROOT:: :
custom-element::SHADOW-ROOT::.target-button
Le séparateur ::SHADOW-ROOT:: indique à Kameleoon d’entrer dans le shadow root de l’élément spécifié et de continuer le ciblage à l’intérieur en utilisant des sélecteurs CSS standard.
Kameleoon ne prend actuellement en charge la navigation que sur un niveau dans le shadow DOM. Si l’élément est imbriqué dans plusieurs shadow roots, il ne peut pas être ciblé à l’aide d’un chemin de sélecteur complet à ce stade.
Exemple
my-element::SHADOW-ROOT::.cta
Cela indique à Kameleoon de :
- Sélectionner l’élément
my-element. - Entrer dans son shadow root.
- Cibler le bouton
.ctaà l’intérieur.
Limitations et considérations
Lorsque vous travaillez avec Shadow DOM, gardez à l’esprit les limitations suivantes :- Shadow DOMs fermés : les éléments dans un shadow root fermé ne peuvent pas être accédés ni modifiés à l’aide du Graphic editor ou de JavaScript standard.
- Contenu dynamique ou généré par script : si le contenu à l’intérieur d’un shadow root est généré ou mis à jour dynamiquement, vos modifications peuvent ne pas persister ou ne pas prendre effet comme prévu.
- Restrictions de style : les styles appliqués depuis l’extérieur du shadow root n’affecteront souvent pas les éléments internes en raison de l’encapsulation de style du Shadow DOM. Les règles CSS peuvent devoir être appliquées directement dans la structure interne du composant, ce qui n’est pas possible via le Graphic editor.
Shadow root (fermé)
Certains web components utilisent un shadow root fermé, ce qui signifie que leur DOM interne est complètement caché des outils de développement du navigateur et de JavaScript. Contrairement à un shadow root ouvert, auquel vous pouvez accéder via.shadowRoot, un shadow root fermé n’expose pas son contenu via le DOM, ce qui le rend inaccessible à :
- Le Graphic editor
- Le ciblage basé sur JavaScript
- Les chemins de sélecteur ou scripts personnalisés
Que pouvez-vous faire ?
Si un élément clé se trouve dans un shadow root fermé, vous aurez besoin de l’aide d’un développeur. Il peut :- Reconstruire le composant en utilisant un shadow root ouvert.
- Exposer des éléments spécifiques pour un ciblage externe.
- Fournir un hook ou une solution de contournement pour le ciblage.