ctx.element
指向沙箱 DOM 容器的 ElementProxy 实例,作为 ctx.render() 的默认渲染目标。在 JSBlock、JSField、JSItem、JSColumn 等有渲染容器的场景下可用。
适用场景
注意:
ctx.element仅在存在渲染容器的 RunJS 上下文中可用;无 UI 上下文的场景(如纯后端逻辑)可能为undefined,使用前建议做空值判断。
类型定义
安全要求
推荐:所有渲染通过 ctx.render() 完成。 不要直接使用 ctx.element 的 DOM API(如 innerHTML、appendChild、querySelector 等)。
为何推荐 ctx.render()
❌ 不推荐:直接操作 ctx.element
ctx.element.innerHTML已废弃,请使用ctx.render()替代。
✅ 推荐:使用 ctx.render()
特例:作为弹窗锚点
在需要以当前元素为锚点打开 Popover 时,可访问 ctx.element?.__el 获取原生 DOM 作为 target:
仅在此类「将当前容器作为锚点」的场景下使用
__el;其他情况请勿直接操作 DOM。
与 ctx.render 的关系
ctx.render(vnode)若无传入container,默认渲染到ctx.element容器内- 若同时无
ctx.element且未传入container,会抛出错误 - 可显式指定容器:
ctx.render(vnode, customContainer)
注意事项
ctx.element仅作为ctx.render()的内部容器使用,不建议直接访问或修改其属性/方法- 在无渲染容器的上下文中
ctx.element为undefined,调用ctx.render()前需确保容器可用或手动传入container - ElementProxy 的
innerHTML/outerHTML虽经 DOMPurify 清洗,仍推荐使用ctx.render()统一管理渲染
相关
- ctx.render:渲染内容到容器
- ctx.view:当前视图控制器
- ctx.modal:模态框快捷 API

