Ce document a été traduit par IA. Pour des informations précises, veuillez consulter la version anglaise.
ctx.element
Une instance ElementProxy pointant vers le conteneur DOM du bac à sable (sandbox), servant de cible de rendu par défaut pour ctx.render(). Elle est disponible dans les scénarios disposant d'un conteneur de rendu, tels que JSBlock, JSField, JSItem et JSColumn.
Scénarios d'application
Remarque :
ctx.elementest uniquement disponible dans les contextes RunJS possédant un conteneur de rendu. Dans les contextes sans interface utilisateur (UI), comme la logique purement backend, il peut êtreundefined. Il est recommandé d'effectuer une vérification de valeur nulle avant toute utilisation.
Définition du type
Exigences de sécurité
Recommandation : Tout rendu doit être effectué via ctx.render(). Évitez d'utiliser directement les API DOM de ctx.element (par exemple, innerHTML, appendChild, querySelector, etc.).
Pourquoi ctx.render() est recommandé
❌ Non recommandé : Manipulation directe de ctx.element
ctx.element.innerHTMLest obsolète. Veuillez utiliserctx.render()à la place.
✅ Recommandé : Utilisation de ctx.render()
Cas particulier : Comme ancre de popover
Lorsque vous devez ouvrir un Popover en utilisant l'élément actuel comme ancre, vous pouvez accéder à ctx.element?.__el pour obtenir le DOM brut comme cible (target) :
Utilisez
__eluniquement dans des scénarios tels que « l'utilisation du conteneur actuel comme ancre » ; ne manipulez pas le DOM directement dans les autres cas.
Relation avec ctx.render
- Si
ctx.render(vnode)est appelé sans argumentcontainer, le rendu s'effectue par défaut dans le conteneurctx.element. - Si
ctx.elementest manquant et qu'aucuncontainern'est fourni, une erreur sera générée. - Vous pouvez spécifier explicitement un conteneur :
ctx.render(vnode, customContainer).
Remarques
ctx.elementest destiné à un usage interne parctx.render(). Il n'est pas recommandé d'accéder directement à ses propriétés ou méthodes, ni de les modifier.- Dans les contextes sans conteneur de rendu,
ctx.elementseraundefined. Assurez-vous que le conteneur est disponible ou passez manuellement uncontaineravant d'appelerctx.render(). - Bien que
innerHTML/outerHTMLdansElementProxysoient nettoyés via DOMPurify, il est toujours recommandé d'utiliserctx.render()pour une gestion unifiée du rendu.
Voir aussi
- ctx.render : Rendre du contenu dans un conteneur
- ctx.view : Contrôleur de vue actuel
- ctx.modal : API rapide pour les fenêtres modales

