シングルページアプリケーション
このページの内容
シングルページアプリケーション について
シングルページアプリケーション(SPA)は、特殊なタイプのウェブアプリです。SPAは、ウェブサイトにアクセスすると単一のページを読み込み、その後はナビゲーションに応じて後続のすべてのコンテンツを同じページに読み込みます。これは通常のウェブサイトのように機能しているように見えますが、「ページ」を切り替えても、実際にはページはリロードされません。
デフォルトでは、ウェブページの読み込みが完了するとすぐにデプロイメントコードが実行されます。ただし、SPAはページ間を移動する際に更新されないため、ページ間を移動してもデプロイメントコードは再評価されません。以下の方法を使用することで、SPAサイトでデプロイメントコードをシームレスに機能させることができます。
ヒント:これらのテクニックの一部は、ウェブサイトフィードバックの JavaScript API を使用します。クアルトリクスウェブサイトインサイトのJavaScript APIに関する詳細なドキュメントについては、こちらのページを参照してください。
注意:以下のドキュメントを実装するには、プログラミングの知識が必要です。この情報は、デプロイメントコードを実装するチームに渡すことをお勧めします。クアルトリクスサポートチームでは、カスタムコーディングに関するサポートやコンサルティングは提供していません。その代わり、クアルトリクスXMコミュニティの経験豊富なユーザーにいつでも質問できます。クアルトリクスが提供するカスタムコーディングサービスの詳細については、クアルトリクスのアカウントエグゼクティブまでお問い合わせください。
ヒント:Javascriptは、すべてのクアルトリクスライセンスに含まれているわけではありません。アクセスをご希望の場合は、クアルトリクスの営業担当までお問い合わせください。
URL変更時のインターセプトのロジックとアクティビティのトラッキングを再評価する
シングルページアプリケーションがユーザーナビゲーションにクライアントサイドのルーティングを使用している場合、[URLの変更時にインターセプトのロジックを再評価する]設定を有効にすることで、その後のURL変更時にインターセプトを強制的に再評価できます。この設定をオンにすると、最初のページ読み込み時に行われる評価に加えて、インターセプトのロジック評価も可能になります。
ヒント:この設定は、プロジェクト内のすべてのインターセプトに影響します。
注意:このSPA設定をインターセプトレベルのオプション[カスタムJavascriptコードで表示(手動)]と併用する場合、引き続き以下を呼び出す必要があります。
QSI.API.run();各SPAページにインターセプトを表示させるためのメソッド。
JavaScript APIを使用した手動での実装
ヒント:クアルトリクスウェブサイトフィードバックのJavaScript APIに関する詳細なドキュメントについては、こちらのページを参照してください。
この方法では、デプロイメントコードを切り替えて手動で実行する方法を概説します。 これは、適切な JavaScript API リクエストが開始されるまで、デプロイメントコードが関連するロジックを実行または評価しないことを意味します。
手動で実装する
JavaScript APIリクエスト
ヒント:クアルトリクスウェブサイトフィードバックのJavaScript APIに関する詳細なドキュメントについては、こちらのページを参照してください。一般的なSPAフレームワークにおけるこのパターンの実用例については、GitHubで公開されているクアルトリクスSPAデモのリポジトリをご覧ください。
クアルトリクスでプロジェクトを一度に評価する場合は、以下の2つのリクエストを使用します。
クアルトリクスでプロジェクトコードを同じページで複数回評価する場合は、その都度、次の3つのステップを繰り返してください。
FAQs
インターセプトを有効化しましたが、サイトに表示されません。なぜですか?
インターセプトを有効化しましたが、サイトに表示されません。なぜですか?
- ロジック:インターセプトのターゲティングロジックとアクションセットロジックは、サイト訪問者にインターセプトを表示するために満たす必要のある条件です。このロジックを確認すると、インターセプトがページに表示されない理由を特定するのに役立ちます。
- 「次を含む」を使用するロジックセット:「次を含む」の使用は、ロジックエラーの一般的な原因です。です。条件が「次を含む」とは、ロジックの基準となるパラメーター(現在のURLなど)に、指定した値が他の情報とともに追加で含まれることを意味します。例えば、「現在のURLに「qualtrics」が含まれる」というロジックがあった場合、URLに「qualtrics」という単語が含まれていれば、どのURLでもインターセプトが表示されることになります。もう1つのオプションは、現在のURLが[URL]であるという条件を使用することです。この条件は、訪問したURLが完全に一致しているかどうかに基づきます。相違点や追加の文字があると、インターセプトのロジックがパスしなくなります。
- インターセプトのリビジョン:インターセプトを編集する際、インターセプトが公開されるまで変更は反映されません。インターセプトを公開すると、そのインターセプトのバージョン、つまり「リビジョン」が保存されます。加えられた変更を確認することは、インターセプトが突然表示されなくなった原因となりうる変更を特定するのに非常に役立ちます。
- デバッグウィンドウ:デバッグウィンドウは、特定のページでインターセプトが表示されない理由をテストするための非常に便利なツールです。
2019年3月より前にデプロイメントコードが実装されたインターセプトの場合、デバッグウィンドウを有効にするには、Q_DEBUGというクエリ文字列を任意のURLに追加します。次のように、先頭に「?」または「&」を付ける必要があります。例:https://www.qualtrics.com?Q_DEBUG、https://www.qualtrics.com/blog?item=value&Q_DEBUG
2019年3月以降にデプロイメントコードが実装されたインターセプトについては、ウェブページのコンソールで次のJavaScriptスニペットを実行してください。デバッグウィンドウには、URL で実行されているインターセプトが表示されるために必要なすべての条件が詳細に表示されます。インターセプトが表示されない場合は、デバッグウィンドウでそのインターセプトを探し、赤色で表示されている失敗の警告を特定します。
QSI.API.unload();
QSI.isDebug = true;
QSI.API.load();
QSI.API.run();ヒント:コードがタグマネージャーを使用して実装されている場合、ウェブサイトインサイトのデバッガーは機能しません。また、URLに「?」を含むクエリ文字列が既にある場合、デバッガーでは代わりに「&」が必要になります。 - ネットワークリクエスト:ほとんどのブラウザには、サイトのソースコード、リソース、Cookie、ネットワークコールを確認できる開発者ツールメニューがあります。ウェブサイトインサイトは、これらのツールのネットワークセクションで明確な存在感を示しています。これらのスクリプトが実行されているか確認するには、開発者ツールを開き、[ネットワーク]セクションに移動します。この画面でウェブページを再読み込みすると、ウェブサイトが行っているすべてのネットワークリクエストがメニューに表示され始めます。Website Insightsのコードを特定するには、?Q_ZIDまたは?Q_SIDで始まるコールを探します。これは、表示ロジックのチェックを実行しているコード自体です。この形式に一致するものが見つからない場合は、プロジェクトコードの実装に問題があります。コードを配置するのに最適な場所に関するアドバイスについては、実装に関するサポートページをご参照ください。
- コンテンツセキュリティポリシーの問題:コンテンツセキュリティポリシーに違反するコンソールログが表示される場合、ウェブサイト上の制限によってクアルトリクスのインターセプトの展開がブロックされている可能性が高いです。解決するには、貴社のウェブ開発チームにご連絡いただくことをお勧めします。インターセプトが機能するように、通常、コンテンツセキュリティポリシーヘッダーで以下の項目を許可リストに登録することをお勧めします。
- connect-src https://*.qualtrics.com
- frame-src https://*.qualtrics.com
- img-src https://siteintercept.qualtrics.com
- script-src https://*.qualtrics.com
- SPA URLの処理:サイトでシングルページアプリケーション(SPA)フレームワークを使用している場合は、ビュー間を移動する際にコードがhistory.pushState()をトリガーするようにしてください。一部のフレームワークでは、新しい履歴エントリをプッシュせずにURLの再レンダリングや更新を行う場合があり、これによりインターセプトが実行されないことがあります。useEffectまたは同様のlifecycleフックを使用している場合は、インターセプトのロジックがナビゲーションの完了後に実行されるようにしてください。
インターセプトを作成しましたが、有効化する前にテストしたいです。どうすればよいですか?
インターセプトを作成しましたが、有効化する前にテストしたいです。どうすればよいですか?
素晴らしい! フィードバックありがとうございます!
フィードバックありがとうございます!