この機能は、開発経験のあるユーザーに最適です。DOM や Shadow DOM のカプセル化に慣れていない場合は、開発者に相談するか、Web Components と Shadow DOM の基本について、オンラインリソースを参照することをお勧めします。
標準セレクタの制限
querySelector() や $() などの標準的な CSS セレクタや JavaScript メソッドは、Shadow DOM 内の要素では動作しません。これらの要素はメインページから隠されており、以下を意味します。
- Kameleoon Graphic エディタの通常の選択方法を使用して Shadow DOM 内の要素をターゲティングすることはできません。
- 実験で従来の CSS や jQuery スタイルのセレクタを使用してこれらの要素をターゲティングすると失敗する可能性があります。
- Shadow DOM の境界を越えるための特別な手順を実行しない限り、変更(テキスト変更、スタイル更新、コンテンツの挿入など)が適用されない場合があります。
Graphic エディタでの Shadow DOM の操作
ほとんどの場合、ユーザーは Kameleoon Graphic エディタのプレビューゾーンから直接シャドウルート内の要素を選択できます。追加の「Shadow root path」入力が表示される場合
場合によっては、Kameleoon Graphic エディタを使用して Shadow DOM 内の要素を選択または編集しようとすると、Shadow root path というラベルの付いた追加の入力フィールドが表示されることがあります。このフィールドは、ターゲット要素がシャドウツリー内に存在し、標準セレクタを使用してアクセスできないことを Kameleoon が検出したときに表示されます。 Shadow root path を使用すると、ネストされた Shadow DOM 層を通る特定のパスを定義でき、Kameleoon は実験の実行中に要素に到達して変更できます。 モック接続: Graphic エディタはこのパスを使用して、メイン DOM と Shadow DOM 内の要素との接続を「モック」し、要素が通常のページ構造の一部であるかのように視覚的に編集およびプレビューできます。例
シャドウルート内のボタンをターゲティングする
Kameleoon Graphic エディタでは、シャドウルート内の要素をターゲティングできます。- プレビューゾーンで直接: 要素にアクセス可能な場合は、標準的な要素と同様に、エディタのプレビュー内で選択できます。
- 「Edit selector」を使用: より複雑な構造の場合は、Edit selector 入力を使用してセレクタパスを手動で構築できます。シャドウルートへのステップインを示すために
::SHADOW-ROOT::区切り文字を使用します。
DevTools で Shadow DOM を検査する
- 要素を右クリック > Inspect。
- Elements パネルで、カスタム要素の下に
#shadow-root (open)を探します。 - 展開して内部の要素を表示します。
UI の視覚的な手がかりまたはラベル
Shadow DOM を使用するウェブページを操作する際、Kameleoon Graphic エディタは要素がシャドウルートの一部であるかどうかを識別するためのいくつかの視覚的インジケーターを提供します。Elements パネルでの #shadow-root

#shadow-root を表示します。これは、要素がカプセル化されており、メイン DOM ツリーの一部ではないことを示します。
セレクタパネル内の「Shadow root path」フィールド

::SHADOW-ROOT:: 構文を使用してシャドウルートを通る完全なパスを構築できます。
Shadow DOM 要素のセレクタパスを記述する方法
Kameleoon Graphic エディタで Shadow DOM 要素を操作する際、標準的な CSS セレクタでは不十分です。シャドウルートを含むセレクタパスを定義する必要があります。 シングルレベルのシャドウルート 内の要素をターゲティングするには、::SHADOW-ROOT:: 区切り文字を使用します。
custom-element::SHADOW-ROOT::.target-button
::SHADOW-ROOT:: 区切り文字は、指定された要素のシャドウルートに入り、標準的な CSS セレクタを使用してその内部でターゲティングを続行するように Kameleoon に指示します。
Kameleoon は現在、シャドウ DOM への 1 レベル のナビゲーションのみをサポートしています。要素が複数のシャドウルート内にネストされている場合、現時点では完全なセレクタパスを使用してターゲティングすることはできません。
例
my-element::SHADOW-ROOT::.cta になります。
これは Kameleoon に以下を指示します。
my-element要素を選択する。- そのシャドウルートに入る。
- 内部の
.ctaボタンをターゲットにする。
制限事項と考慮事項
Shadow DOM を扱う際は、以下の制限を念頭に置いてください。- クローズドな Shadow DOM: クローズドなシャドウルート内の要素は、Graphic エディタまたは標準的な JavaScript を使用してアクセスまたは変更できません。
- 動的またはスクリプト生成コンテンツ: シャドウルート内のコンテンツが動的に生成または更新される場合、変更が期待通りに永続化されないか、効果が現れない可能性があります。
- スタイリングの制限: シャドウルートの外側から適用されるスタイルは、Shadow DOM のスタイルカプセル化のために内部要素に影響を与えないことがよくあります。CSS ルールはコンポーネントの内部構造内に直接適用する必要があるかもしれませんが、これは Graphic エディタでは不可能です。
シャドウルート(クローズド)
一部のウェブコンポーネントはクローズドシャドウルートを使用しており、内部の DOM がブラウザの開発者ツールや JavaScript から完全に隠されています。.shadowRoot を使用してアクセスできるオープンシャドウルートとは異なり、クローズドシャドウルートはコンテンツを DOM を介して公開 しない ため、以下にはアクセスできません。
- Graphic エディタ
- JavaScript ベースのターゲティング
- セレクタパスまたはカスタムスクリプト
何ができるか?
主要な要素がクローズドシャドウルート内にある場合、開発者の助けが必要です。開発者は次のことができます。- オープンシャドウルートを使用してコンポーネントを再構築する。
- 外部からのターゲティングのために特定の要素を公開する。
- ターゲティング用のフックまたは回避策を提供する。