Shadow DOM内のフィーチャーをタグ付けする

最終更新日:

この記事では、Shadow DOM内に存在するフィーチャーにタグを付ける方法について説明します。Shadow DOMはウェブアプリケーションに特化した構造で、Pendo が要素を検出して一致させる方法に影響を与えます。

Shadow DOMの使い方を理解することで、タグを正確かつ再利用可能に保つことができます。

前提条件

Shadow DOM内のフィーチャーにタグを付けるには:

  • アプリケーションには「open」モードのShadow DOM要素を使用する必要があります。
  • Pendo Web SDKのバージョンは2.38.0以上である必要があります。
  • Google Chromeなどの開発者ツールでShadow DOMの検査をサポートするブラウザを使用する必要があります。

注:PendoはclosedモードでのShadow DOMをサポートしていません。

Shadow DOMについて

DOM(Document Object Model)は、ウェブページ上のすべての要素を階層的なツリー構造で表現するモデルです。ページ内の各要素(例:div、フォーム、ボタン)は、DOMツリー内のノードとして表示されます。Pendoでフィーチャーにタグを付けると、DOM構造内でその要素がどこにあるかをPendoに伝えることになります。

Shadow DOMは DOM 内の特殊なサブツリーであり、ドキュメントの他の部分から分離されています。再利用可能なコンポーネント(モーダルやドロップダウンなど)のスタイルや動作をカプセル化するためによく使用されます。Shadow DOMは、変更が発生した際に再処理が必要なものを制限することで、パフォーマンスを向上させます。

Shadow DOMはメインDOM内のミニDOMとして機能します。分離されており、正しい構文を使用して明示的にアクセスする必要があります。

以下は、Shadow DOMを含む偽のウェブページのDOM構造を概説した図です。左側には、チャートの送信ボタンを構成するさまざまなクラスとIDが含まれています。右側には、テーブル上のエクスポートボタンを構成するクラスとIDがShadow DOM内に表示されます。

DOM_Shadow1.jpg

ヒント:詳細については、MDNのShadow DOMの使用に関する記事をご覧ください。

Shadow DOMがタグ付けに重要な理由

フィーチャーのタグ付けはDOM内の要素を識別することで機能するため、Shadow DOM内の要素には異なる構文が必要です。標準セレクターを使用してShadow DOM要素にタグを付けようとすると、一致しません。

以下はその例です:

  • 通常のセレクター:.container .chart #submit-button
  • Shadow DOMセレクター:.container::shadow .table #export-button

::shadow部分は、要素を特定する際にPendoにShadow DOMの境界に入るよう指示します。

アプリがShadow DOMを使用しているかどうかを判断する方法

Shadow DOM内にフィーチャーがあるかどうかを判断する主な方法は2つあります。

提案されたタグ付けルールを確認する

ビジュアルデザインスタジオ(Visual Design Studio)で要素を選択し、提案された一致ルールを確認します。ルールに::shadowが含まれている場合、その要素はShadow DOM 内にあります。

Chromeでページを検証する

  1. 要素を右クリックし、[検証(Inspect)]を選択してChrome DevToolsを開きます。
  2. 画面右上の歯車アイコンを選択して[Settings]を開きます。
  3. [Preferences > Elements] で、[Show user agent shadow DOM] にチェックを入れます。
  4. [Elements]パネルで、階層内の#shadow-root (open)の下にネストされている要素を探します。

Shadow DOM内の要素にタグを付ける

Shadow DOMでフィーチャーにタグを付ける際は、Pendoが提供する構造に基づいた推奨フィーチャー一致ルールから始めることをお勧めします。ただし、フィーチャータグは、必要以上に具体的である可能性があります(同様の機能のグループではなく、Shadow DOM内の機能の個々のインスタンスを参照するなど)。

このような場合は、DOMのShadow要素への参照をそのままにして、具体的すぎるルールを編集する必要があります。例えば、以下の画像では、テーブルと2つのボタン(インポートボタンとエクスポートボタン)を含むページのDOMツリーが表示されています。

DOM_Shadow2.jpg

こちらは、単一のボタンにタグを付けるための別の例です。推奨されるルールは以下の通りです。

.container::shadow .table #export-button

すべてのボタンに一致するように更新されたルールは次のとおりです。

.container::shadow .table .button

::shadow部分をそのままにして、セレクターの最も具体的な部分だけを調整し、一致範囲を広げたり絞り込んだりすることが重要です。

ネストされたShadow DOM をタグ付けする

アプリケーションに他のShadow DOM内にShadow DOMが含まれている場合、各レイヤーをマッチルールに::shadowを複数回使用して含める必要があります。

次の図の例を参照してください。

DOM_Shadow3.jpg

こちらは、Shadow DOMの2層を通してタグ付けするもう一つの例です。

.container::shadow .report::shadow .table #export-button

この例では、.report は最初のShadow DOMの内側にあり、.tableおよび#export-buttonは2番目のネストされたShadow DOM内にあります。

ブラウザコンソールを使用してルールを検証する

ブラウザのコンソールで任意のマッチルールをテストして、正しい要素をターゲットにしていることを確認できます。

ルールが期待通りに機能することを確認するには:

  1. ページを右クリックし、[検証(Inspect)]を選択してChrome DevToolsを開きます。
  2. [コンソール(Console)]タブを開きます。
  3. ブラウザ拡張機能を使用している場合、コンソールの上部にあるドロップダウンメニューからコンテキストをPendo Launcherに変更します。
  4. 次のコマンドを実行します。
pendo.dom(`.container::shadow .table .button`)
  1. 結果を展開し、各エントリにカーソルを合わせて、正しい要素が強調表示されていることを確認します。

ヒント:この方法は、Shadow DOMセレクターだけでなく、どのPendo一致ルールでも機能します。

この記事は役に立ちましたか?
3人中0人がこの記事が役に立ったと言っています