AI翻訳通知
このドキュメントはAIによって翻訳されました。正確な情報については英語版をご参照ください。
ctx.element
サンドボックス内の DOM コンテナを指す ElementProxy インスタンスであり、ctx.render() のデフォルトのレンダリング先として機能します。JSBlock、JSField、JSItem、JSColumn など、レンダリングコンテナが存在するシーンで使用可能です。
適用シーン
注意:
ctx.elementは、レンダリングコンテナが存在する RunJS コンテキストでのみ利用可能です。UI コンテキストがないシーン(純粋なバックエンドロジックなど)ではundefinedになる可能性があるため、使用前に null チェックを行うことを推奨します。
型定義
セキュリティ要件
推奨:すべてのレンダリングは 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

