这是我们客户建议的方案之一,包括在一定时间后启动DTM规则。
场景 - 根据要求,一旦加载网站,并且用户不执行任何活动,必须在5秒后触发页面加载规则。如果用户在5秒之前执行点击或任何其他操作,则必须触发该特定跟踪规则。
关于我应该如何选择这个的任何建议。
答案 0 :(得分:2)
这是一个PoC,一个起点。您需要根据您定义的内容对此进行扩展。
正如我在您的问题评论中所提到的,您需要定义哪些网站已加载"实际上对你意味着(以一种可以实际编码的方式),并且还定义了构成用户动作的内容(也以实际可编码的方式)。
作为概念证明(PoC),我将定义"网站已加载"作为window.load
事件,"点击或任何其他操作" as"点击任何链接"。
另外,你并不完全明白你想要实际触发的内容。我可以说,无论如何,你想触发同样的事情,并且没有说明其他方面没有区别。因此,我将通过调用单个直接呼叫规则来简化此PoC,从而显示一条消息,表明发生了哪种情况。
第1部分 - 超时
创建页面加载规则并将其设置为在window.load
事件上触发。当发生这种情况时,会调用setTimeout
,它将在5秒后调用函数。当调用该函数时,它会检查数据元素是否被称为" fiveSecondRule"存在。如果它不存在,则将其设置为值"超时"表示它是从此代码设置的。然后是名为" fiveSecondRule"的直接呼叫规则(在下面定义)被称为。
首先,转到规则> 页面加载规则,然后点击创建新规则。为您的规则提供名称"五秒规则 - 超时"。
在条件下,将触发规则下拉列表设置为" Onload
"。
在 Javascript /第三方标记部分中,点击添加新脚本以打开脚本叠加层。将其命名为" config"。对于类型,请选择" Non-Sequential Javascript
",然后选择/选中全局执行选项。
将以下代码添加到代码框中:
window.setTimeout(
function() {
if (!_satellite.getVar('fiveSecondRule')) {
_satellite.setVar('fiveSecondRule','timeout');
_satellite.track('fiveSecondRule');
}
}
,5000
);
点击保存代码,然后点击保存规则以保存规则。
如果您加载了#34;网站的定义,那么您需要更改这些内容"是window.load
事件以外的事情。例如,您可以将其定义为DOM Ready,在这种情况下,您只需将触发规则更改为" DOM Ready
"。但是,如果您的定义更复杂(例如,等待来自您网站框架的某些回调),那么您需要将其置于直接调用规则中并自行明确调用。
注意:" time passed
"有基于事件的规则。 事件类型,您可以设置为在5秒后触发。作为PoC的替代方案,您可以改为执行此操作,并添加类似于下面第2部分中所述的规则条件(而不是上面的代码)。 DTM文档没有详细说明定时器实际启动的时间或实际上如何跟踪此事件的时间。
我还没有花太多时间试图对核心DTM库进行逆向工程,但是从它的5秒钟开始,我可以告诉它"寄存器"这种类型的事件在" Top of Page"代码执行(放置DTM Header脚本),它使用cookie / localstorage和timeInterval
来不断轮询它。
因此,如果这一切都符合您对5秒规则的定义,那么编制5秒基于事件的规则的编码就会少一些。但是,如果您的定义更复杂,我选择上面的页面加载规则和setTimeout
方法为您提供更多灵活性作为基线。
第2部分 - 用户操作
基于事件的规则设置为在用户点击链接时触发。当规则触发时,条件代码会检查数据元素是否命名为" fiveSecondRule"已设定。如果没有,那么值为" linkClick"设置为表示已单击链接。然后直接呼叫规则命名为" fiveSecondRule"叫做。
转到规则> 基于事件的规则,然后点击创建新规则。为您的规则提供名称"五秒规则 - 链接点击次数"。
在条件>下活动> 事件类型,选择" click
" (应该是默认选项)。
然后对于标记> 元素标记或选择器,添加" a
" (没有引号)。
注意:这超出了本文的范围,但根据您网站/网页上实施的其他代码,您可能需要更改其他代码本节中的设置。
接下来,在规则条件>下标准,选择" Data
> Custom
"并单击添加标准。在自定义代码框中,添加以下代码:
if (!_satellite.getVar('fiveSecondRule')) {
_satellite.setVar('fiveSecondRule','linkClick');
_satellite.track('fiveSecondRule');
}
return true;
点击保存规则以保存规则。
如上所述,这只是点击链接。这听起来像你对"动作"的定义包括更多。定义用户操作的内容后,请相应地创建更多基于事件的规则。
第3部分 - 触发
设置直接呼叫规则以充当"触发器"。第1部分和第2部分中的所有规则最终都将调用此规则,这是您在5秒之前或5秒之后执行操作时放置要执行的代码的位置。
转到规则> 直接呼叫规则,然后点击创建新规则。为您的规则提供名称"五秒规则 - 触发"。在条件>下字符串,添加" fiveSecondRule" (没有引号)。
从这里,您可以触发您实施的任何工具,或添加您想要触发的任何第三方标记。您可以在工具字段中使用%fiveSecondRule%
语法,它将具有表示如何调用它的值(例如" linkClick"或" timeout",如上所示)。对于javascript语法(在js代码框中),您可以使用_satellite.getVar('fiveSecondRule')
来获取值。
我认为,在可能的范围内,您可能需要触发单独的直接呼叫规则,具体取决于它是在5秒之前还是之后触发。但这实际上取决于你最终要触发的内容,而你尚未澄清。
但如果是这样,那么将此直接呼叫规则重命名为"五秒规则 - 之前"对于条件,将其更改为" beforeFiveSecondRule" (没有引号)。另外,对于您从第2部分所做的所有规则,请返回并将_satellite.track()
调用参数更改为此。
然后,创建另一个名为"五秒规则 - 在"之后的直接呼叫规则,对于条件,放置" afterFiveSecondRule" (没有引号)。另外,返回并将第1部分中的_satellite.track()
参数更改为此。