Web 拡張機能の条件のタイプ
ルールの文脈では、条件はイベントの発生後に評価されます。ルールの処理を続行するには、すべての条件が true を返す必要があります。 ただし「例外」バケットに条件を明示的に配置した場合は例外です。この場合、ルールの処理を続行するには、バケット内のすべての条件が false を返す必要があります。
例えば、拡張機能には「viewport contains」条件タイプを指定できます。この条件タイプでは、 のユーザーが CSS セレクターを指定できます。 この条件がクライアントの Web サイトで評価されると、拡張機能は、CSS セレクターに一致する要素を見つけ出し、その要素のいずれかがユーザーのビューポート内に含まれているかどうかを返すことができます。
このドキュメントでは、Adobe Experience Platform で web 拡張機能の条件タイプを定義する方法について説明します。
通常、条件タイプは次の要素で構成されます。
- Experience PlatformUI とデータ収集 UI に表示される ビュー。条件の設定を変更できます。
- タグのランタイムライブラリ内で生成されるライブラリモジュール。設定を解釈し、条件を評価します。
条件タイプのライブラリモジュールの目的は、対象が true と false のどちらであるかを評価することです。何を評価するかは、自由に設定できます。
例えば、ユーザーが example.com
ホスト上にいるかどうかを評価したい場合、モジュールは次のようになります。
module.exports = function(settings) {
return document.location.hostname === 'example.com';
};
次に、Adobe Experience Platform ユーザーがホスト名を設定できるようにする場合を考えてみましょう。 ユーザーがホスト名を入力し、そのホスト名を設定オブジェクトに保存できるようにします。オブジェクトは次のようになります。
{
"hostname": "example.com"
}
ユーザー定義のホスト名を操作するには、モジュールを次のように変更する必要があります。
module.exports = function(settings) {
return document.location.hostname === settings.hostname;
};
コンテキストイベントデータ
2 つ目の引数は、ルールを起動したイベントに関するコンテキスト情報を含むモジュールに渡されます。 これは状況によってはメリットがあり、次のように指定することで実現できます。
module.exports = function(settings, event) {
// event contains information regarding the event that fired the rule
};
event
オブジェクトには次のプロパティが含まれている必要があります。
$type
youtube.play
$rule
現在実行中のルールに関する情報を含むオブジェクト。 オブジェクトには、次のサブプロパティが含まれている必要があります。
id
:現在実行中のルールの ID。name
:現在実行中のルールの名前。
ルールをトリガーしたイベントタイプを提供する拡張機能では、必要に応じて、その他の役に立つ情報をこの event
オブジェクトに追加できます。