Activation API が提供するメソッドやデータ構造に加えて、JavaScript エンジンはカスタム DOM イベントを発行します。これらのイベントは、Kameleoon の挙動をカスタマイズし、プラットフォームを拡張するための優れた起点となります。たとえば、Kameleoon::ExperimentTriggered イベントをリッスンすることで、実験がトリガーされたタイミングで通知を受け取ることができます。
以下のリストは、現在実装されているイベントを示しています。現在の Activation API に必要なイベントがない場合は、テクニカルサポートに連絡して改善をリクエストしてください。特定の要件に合わせて新しいイベントを追加できます。
JavaScript 環境では実行スレッドが 1 つしかないため、連続した同期実行ブロック内でトリガーされたイベントは同時に受信されます。コールバックリスナーは、コードがイベントをトリガーした正確な瞬間ではなく、Kameleoon のコードブロック全体の実行が完了した後に実行されます。たとえば、ローカルストレージのロードが同期的に実装されている場合(クロスドメイン構成で現在の URL がメインドメインにない場合を除き、これが一般的なケースです)、Kameleoon::Loaded と Kameleoon::Started は同時に受信される可能性があります。ターゲティングが即座に評価可能な実験では、Kameleoon::Started と Kameleoon::ExperimentTriggered も同時になります。
イベント一覧
Kameleoon::Loaded
window.addEventListener('Kameleoon::Loaded', function (event) {
var loadTime = event.detail.loadTime;
var timeout = event.detail.timeout;
});
このイベントは、Kameleoon アプリケーションファイルのロードが完了し、エンジンコードがブラウザで実行可能になった時点で発行されます。イベントはセットアッププロセスの開始時にトリガーされます。後続のイベント(後述)は、初期化が特定のステップに達するとトリガーされます。
イベントで取得可能なデータ
| 名前 | 型 | 説明 |
|---|
| loadTime | Number | Kameleoon アプリケーションファイルのロード完了時刻(UTC 形式 - 1970 年 1 月 1 日からの ms)。 |
| timeout | Boolean | Kameleoon アプリケーションファイルの(非同期)ロード中にタイムアウトが発生した場合は true。 |
Kameleoon::Aborted
window.addEventListener('Kameleoon::Aborted', function (event) {
var reason = event.detail.reason;
});
このイベントは、Kameleoon エンジンが現在のページで実行を停止した際にトリガーされます。このイベントは、現在の訪問者とページに対して Kameleoon が非アクティブであることを示します。イベントは中止の理由を提供します:
- BROWSER: ブラウザがサポートされていません。
- PRERENDER: これはプリレンダーリクエスト(例: Chrome の最適化)であり、人間が閲覧している Web ページではありません。誤った統計を回避するため、Kameleoon は実行されません。
- STORAGE: ローカルストレージへの書き込みなど、通常の動作に必要な技術的前提条件を満たせません。
- TIMEOUT: ファイルのロード時間が許容量を超え、設定で中止が必要となりました。
- DISABLED: Kameleoon がバックオフィスアプリケーションで無効化されました。このステータスがアクティブな場合、すべてのフロントエンドの Kameleoon ロードは直ちに中止されます。
- PARAMETER: URL 内の特殊なパラメータ(例:
kameleoonDisabled=true)により、デバッグや検証のためにエンジンが実行を停止します。
- SCRIPT: カスタムの中止スクリプトが現在のロードに対して true を返しました。
イベントで取得可能なデータ
| 名前 | 型 | 説明 |
|---|
| reason | String | 中止の理由 / 原因。 |
Kameleoon::Started
window.addEventListener('Kameleoon::Started', function (event) {
var newVisitor = event.detail.newVisitorCode;
});
このイベントは、Kameleoon エンジンがメイン初期化を完了した際に発行されます。この段階で、エンジンはローカルストレージデータをロードし、グローバルスクリプト、カスタムデータ取得コード、および Command Queue を介して遅延されたコマンドを実行しています。このイベントの後、Kameleoon のアクティベーションとトラッキングループが開始されます。実験とパーソナライゼーション(ターゲティング条件が一致する場合)がトリガーされ、データ収集が開始されます。
Activation API メソッドが利用可能になります。Kameleoon.API は読み取り可能ですが、一部のデータ(後続の非同期呼び出しによって取得される位置情報データなど)はまだ利用できない場合があります。イベントデータは、初期化によって新しい visitorCode が生成されたかどうかを示します。
イベントで取得可能なデータ
| 名前 | 型 | 説明 |
|---|
| newVisitorCode | Boolean | この訪問者に対して新しい(ランダムな)visitorCode が生成された場合は true(Kameleoon にとって未知 / 新しい訪問者)、それ以外は false。 |
Kameleoon::DataGathered
window.addEventListener('Kameleoon::DataGathered', function (event) {
// この時点で、オブジェクトが存在し、正しいことが保証されます。
var currentLocation = Kameleoon.API.CurrentVisit.geolocation;
});
このイベントは、Kameleoon エンジンがデータの収集を完了した際にトリガーされます。収集にはリモート呼び出しや非同期メソッドが含まれることが多いため、このイベントはそれらの処理が完了した後にトリガーされます。
このイベントがトリガーされた時点で、Activation API は完全に使用可能となります。すべての API フィールドが正しい値を含みます。
Kameleoon は通常、訪問の開始時のみリモート呼び出しを実行するため、このイベントは最初のページビューでは遅れて発生し、後続のビューではほぼ即座に発生します。後続のビューで Activation API のデータを早期に読み取ることは機能する場合がありますが、データの存在と精度は保証されません。読み取り操作(特に位置情報や天気などの訪問データ)を実行する前にこのイベントをリッスンすることを強く推奨します。
window.addEventListener('Kameleoon::RemoteSynchronizationPerformed', function (event) {
var allVisits = event.detail.visits;
});
このイベントは、Kameleoon.API.Data.performRemoteSynchronization() メソッドによって開始された Server Synchronization Call (SSC) を Kameleoon エンジンが完了した際にトリガーされます。これは、クロスデバイス履歴の照合、Intelligent Tracking Prevention、またはカスタムデータの更新中に発生します。
SSC の詳細はこちらをご覧ください。
イベントで取得可能なデータ
| 名前 | 型 | 説明 |
|---|
| visits | Array | Data API によって返される、この訪問者に対応する Visit オブジェクト のリスト。 |
| currentVisitOnly | Boolean | Kameleoon.API.Data.performRemoteSynchronization() が currentVisitOnly 引数を true に設定して呼び出された場合は true、それ以外は false。 |
Kameleoon::LegalConsentUpdated
window.addEventListener('Kameleoon::LegalConsentUpdated', function (event) {
var legalConsentUpdate = event.detail.legalConsentUpdate;
});
このイベントは、現在の訪問者の 法的同意 ステータスが変更されるたびに発火します。変更には、AB Testing または Personalization モジュールに対する同意(Kameleoon.API.Core.enableLegalConsent())または拒否(Kameleoon.API.Core.disableLegalConsent())が含まれます。更新されたステータスは Kameleoon.API.Visitor.experimentLegalConsent または Kameleoon.API.Visitor.personalizationLegalConsent を介してアクセスできます。イベントオブジェクトには更新の詳細が含まれます。
イベントで取得可能なデータ
| 名前 | 型 | 説明 |
|---|
| legalConsentUpdate | Object | 処理されたばかりの更新内容。形式は {“AB_TESTING”: true|false, “PERSONALIZATION”: true|false} です。たとえば、AB Testing モジュールのみで拒否を登録した場合は {“AB_TESTING”: false} に等しく、両モジュールで同意があった場合は {“AB_TESTING”: true, “PERSONALIZATION”: true} に等しくなります。 |
Kameleoon::ExperimentTriggered
window.addEventListener('Kameleoon::ExperimentTriggered', function (event) {
var experiment = event.detail.experiment;
var experimentId = experiment.id;
});
このイベントは、実験がトリガーされたとき(つまり、訪問者がターゲットセグメントに一致したとき)にトリガーされます。トラフィック除外やキャッピングなどの追加オプションにより、訪問者は実験をアクティブ化せずにトリガーすることがあります(次のイベントを参照)。実験が複数のページでトリガーされる場合、イベントは毎回発火します。
イベントで取得可能なデータ
| 名前 | 型 | 説明 |
|---|
| experiment | Object | Experiment オブジェクト |
Kameleoon::ExperimentActivated
window.addEventListener('Kameleoon::ExperimentActivated', function (event) {
var experiment = event.detail.experiment;
var experimentId = experiment.id;
var associatedVariationId = experiment.associatedVariation.id;
});
このイベントは、実験がアクティブ化されたとき(つまり、訪問者が実験結果にカウントされるとき)にトリガーされます。アクティベーションは、実験がトリガーされ、すべての露出条件が一致したときに発生します。アクティベーションが複数のページで発生する場合、イベントは毎回発火します。
イベントで取得可能なデータ
| 名前 | 型 | 説明 |
|---|
| experiment | Object | Experiment オブジェクト |
Kameleoon::PersonalizationTriggered
window.addEventListener('Kameleoon::PersonalizationTriggered', function (event) {
var personalization = event.detail.personalization;
var personalizationId = personalization.id;
});
このイベントは、パーソナライゼーションがトリガーされたとき(つまり、訪問者がターゲットセグメントに一致したとき)にトリガーされます。キャッピングなどの追加の露出オプションにより、パーソナライゼーションアクション(バナーやポップインの表示など)が妨げられる場合があります。このシナリオでは、パーソナライゼーションはアクティブ化されません(次のイベントを参照)。パーソナライゼーションが複数のページでトリガーされる場合、イベントは毎回発火します。
イベントで取得可能なデータ
| 名前 | 型 | 説明 |
|---|
| personalization | Object | Personalization オブジェクト |
Kameleoon::PersonalizationActivated
window.addEventListener('Kameleoon::PersonalizationActivated', function (event) {
var personalization = event.detail.personalization;
var personalizationId = personalization.id;
var associatedVariationId = personalization.associatedVariation.id;
});
このイベントは、パーソナライゼーションがアクティブ化されたとき(つまり、パーソナライゼーションがページに表示されたとき)にトリガーされます。アクティベーションは、パーソナライゼーションがトリガーされ、すべての露出条件が一致したときに発生します。アクティベーションが複数のページで発生する場合、イベントは毎回発火します。
イベントで取得可能なデータ
| 名前 | 型 | 説明 |
|---|
| personalization | Object | Personalization オブジェクト |
Kameleoon::CustomDataSet
window.addEventListener('Kameleoon::CustomDataSet', function (event) {
var customDataName = event.detail.name;
var customDataValue = event.detail.value;
});
このイベントは、カスタムデータが設定されるたび(つまり、その値が提供されたとき)に発火します。このイベントは、取得方法(Data Layer 統合、Activation API、Data API、またはカスタム JS コード)に関係なく発火します。
イベントで取得可能なデータ
| 名前 | 型 | 説明 |
|---|
| name | String | カスタムデータの名前。 |
| value | Any | カスタムデータの値。その型はカスタムデータで定義された型に依存します。 |
Kameleoon::ConversionTriggered
window.addEventListener('Kameleoon::ConversionTriggered', function (event) {
var goal = event.detail.goal;
});
このイベントは、コンバージョンがトリガーされたとき(つまり、ゴールに到達したとき)にトリガーされます。
イベントで取得可能なデータ
| 名前 | 型 | 説明 |
|---|
| goal | Object | Goal オブジェクト |
Kameleoon::SegmentTriggered
window.addEventListener('Kameleoon::SegmentTriggered', function (event) {
var segment = event.detail.segment;
});
このイベントは、アクティブなセグメントがトリガーされたとき(つまり、訪問者がすべてのターゲティングセグメント条件に一致したとき)にトリガーされます。セグメントは、実行中の実験、パーソナライゼーション、または Audiences ツールに関連付けられている場合にアクティブとみなされます。Kameleoon はそれ以外のすべてのセグメントを非アクティブとみなします。
イベントで取得可能なデータ
| 名前 | 型 | 説明 |
|---|
| segment | Object | Segment オブジェクト |
Kameleoon::ConversionScoreComputed
window.addEventListener('Kameleoon::ConversionScoreComputed', function (event) {
var kcs = event.detail.kcs;
var segmentId = event.detail.targetSegment.id;
});
このイベントは、キーモーメントとして定義されたセグメントがトリガーされたときにトリガーされます。この時点で、機械学習アルゴリズムが Kameleoon Conversion Score (KCS) を計算して提供します。
イベントで取得可能なデータ
| 名前 | 型 | 説明 |
|---|
| kcs | Number | KCS(Kameleoon Conversion Score)、0 から 100 までの整数。 |
| targetSegment | Object | KCS が計算されたキーモーメントに対応する Segment オブジェクト。 |