Web扩展的事件类型

NOTE
Adobe Experience Platform Launch已更名为Adobe Experience Platform中的一套数据收集技术。 因此,产品文档中的术语有一些改动。有关术语更改的综合参考,请参阅以下文档

在标记规则中,事件是指为了让规则触发而必须发生的活动。 例如,Web扩展可以提供“手势”事件类型,用于监视特定鼠标或触摸手势的发生。 一旦该手势发生,事件逻辑就会触发规则。

事件类型库模块设计为检测活动何时发生,然后调用函数以触发关联的规则。 检测到的事件是可自定义的。 例如,可以检测用户何时做出特定手势、快速滚动或与其他内容交互。

本文档介绍如何在Adobe Experience Platform中定义Web扩展的事件类型。

NOTE
本文档假设您熟悉库模块以及库模块在Web扩展中的集成方式。 在返回到本指南之前,请参阅关于库模块格式的概述,以了解实施概况。

事件类型由扩展定义,通常包含以下内容:

  1. A 视图 显示在Experience PlatformUI和数据收集UI中,允许用户修改事件的设置。
  2. 在标记运行时库中发出的库模块,用于解释设置并监视特定活动的发生。

module.exports 接受两个 settingstrigger 参数。 这允许对事件类型进行自定义。

module.exports = function(settings, trigger) { … };
参数
描述
settings
一个对象,其中包含用户在事件类型视图中配置的任何设置。您对此对象中的内容拥有最终控制权。
trigger
每当应该触发规则时,模块应调用的函数。A之间存在一对一的关系 settings 对象, a trigger 函数和一个规则。 这意味着您收到的某个规则的触发器函数不能用于触发其他规则。
NOTE
对于每个已配置为使用您的事件类型的规则,都将调用一次导出函数。

以经过5秒的活动为例,经过5秒后,该活动即发生并将触发规则。 该模块将与以下示例类似。

module.exports = function(settings, trigger) {
  setTimeout(trigger, 5000);
};

如果要让Adobe Experience Platform用户可以配置持续时间,则需要选择输入持续时间并将其保存到设置对象。 该对象可能如下所示:

{
  "duration": 25000
}

要对用户定义的持续时间执行操作,需要更新模块以包含此持续时间。

module.exports = function(settings, trigger) {
  setTimeout(trigger, settings.duration);
};

传递上下文事件数据

触发规则时,提供有关所发生事件的其他详细信息通常很有用。 创建规则的用户会发现,该信息对于实现特定行为非常有用。例如,营销人员需要创建一个规则,以便用户每次轻扫屏幕时都发送分析信标。 扩展必须提供 swipe 事件类型,以便营销人员可以使用此事件类型触发相应的规则。 假设营销人员希望包含信标上发生轻扫的角度,那么如果不提供其他信息,则很难做到这一点。 要提供有关所发生事件的更多信息,请在调用 trigger 函数时传递一个对象。例如:

trigger({
  swipeAngle: 90 // the value would be the detected angle
});

接下来,营销人员可通过在文本字段中指定值 %event.swipeAngle%,在分析信标中使用该值。另外,他们也可以从其他上下文(例如,自定义代码操作)中访问 event.swipeAngle。可以包含其他类型的可选事件信息,这些信息可能以相同的方式对营销人员有用。

nativeEvent

如果您的事件类型基于本机事件(例如,如果您的扩展提供了 click 事件类型),建议设置 nativeEvent 属性,如下所示。

trigger({
  nativeEvent: nativeEvent // the value would be the underlying native event
});

这对于尝试从本机事件中访问任何信息(例如,光标的坐标位置)的营销人员会非常有用。

element

如果元素与发生的事件之间存在紧密联系,建议设置 element 属性到元素的DOM节点。 例如,如果您的扩展提供 click 事件类型并允许营销人员对其进行配置,以便仅当ID为的元素触发 herobanner 已选中。 在这种情况下,如果用户选择主页横幅,则建议调用 trigger 和设置 element 到主页横幅的DOM节点。

trigger({
  element: element // the value would be the DOM node
});

遵守规则顺序

标记让用户能够排序规则。 例如,用户可以创建两个规则,这两个规则都使用orientation-change事件类型,并且用户还可以自定义触发规则的顺序。 假设Adobe Experience Platform用户指定了订单值 2 规则A中的方向更改事件和一个订单值 1 规则B中的方向更改事件。这表示当移动设备上发生方向更改时,规则B应在规则A之前触发(首先触发顺序值较低的规则)。

如前所述,对于每个已配置为使用我们的事件类型的规则,将调用一次我们事件模块中的导出函数。每次调用导出函数时,都会传递一个与特定规则绑定的唯一 trigger 函数。在刚才所述的情况中,将使用调用一次导出函数 trigger 绑定到规则B的函数,然后使用 trigger 与规则A绑定的函数。规则B先于规则B,因为用户为其指定的值顺序低于规则A。当我们的库模块检测到方向更改时,请务必调用 trigger 函数按照提供给库模块的相同顺序进行提供。

在下面的示例代码中,请注意当检测到方向更改时,将按照提供给导出函数的相同顺序来调用 trigger 函数:

var triggers = [];

window.addEventListener('orientationchange', function() {
  triggers.forEach(function(trigger) {
    trigger();
  });
});

module.exports = function(settings, trigger) {
  triggers.push(trigger);
};

这可以确保遵守用户指定的顺序。

如果实施不当,则会导致以不同的顺序调用 trigger 函数:

var triggers = [];

window.addEventListener('orientationchange', function() {
  for (var i = triggers.length - 1; i >= 0; i--) {
    triggers[i]();
  }
});

module.exports = function(settings, trigger) {
  triggers.push(trigger);
};

通常,自然的编程惯例可遵守正确的顺序,但是务必要了解其影响并相应地进行开发。

recommendation-more-help
12b4e4a9-5028-4d88-8ce6-64a580811743