如何在adobe DTM中延迟s.t呼叫?

时间:2017-10-02 13:32:42

标签: javascript tags adobe analytics adobe-analytics

我创建了一个基于事件的规则 -

在adobe analytics部分,我设置了s.t呼叫,但如何延迟此呼叫 - “s.t call”

这里我附上了一个实际设置的屏幕截图。

enter image description here

2 个答案:

答案 0 :(得分:1)

DTM目前不提供延迟基于事件的规则(EBR)中的s.t(或s.tl)触发器的方法,因此您必须自己编写最终进行s.t调用的javascript。

由于您的屏幕截图显示了 EBR 中的Adobe Analytics(AA)部分,因此听起来您在DTM中将AA设置为工具。 DTM允许您在工具的AA部分的自定义代码部分中引用AA s对象,但它没有正式的方法来获取AA s对象之外的参考那范围。

因此,为了实现这一目标,您必须将s对象放入工具配置中的全局(window)范围内。您可以通过在AA 工具配置

的自定义代码框中添加一行来完成此操作

window.s = s;

(或者如果您将命名空间更改为工具配置中的其他名称,请改用它)。

接下来,关于使用this的说明 - 我在您的屏幕截图中注意到页面名称您有%this.getAttribute(data-search-pagename)%。因为你想延迟s.t调用,无论你在做什么(例如setTimeout,在一些ajax回调函数中弹出它等等)几乎肯定会让你超出{{1正确引用 EBR 所依据的元素,因此您将无法再使用this填充页面名称。

要绕过this,请转到 EBR 条件部分。在规则条件>下标准,选择数据:自定义。在自定义代码框中,您可以添加以下内容:

this

以上内容会将_satellite.setVar('data_search_pagename',this.getAttribute('data-search-pagename')); return true; 属性值推送到名为' data_search_pagename'的数据元素。 (或根据您的惯例,将其命名为您想要的任何名称)。 data-search-pagename部分将始终使此条件成立,因此它是"不可见"对你的规则而言实际上并不影响规则是否应该触发。

最后,在 EBR 中,您将使用AA工具部分(在该部分中选择已禁用选项)。相反,您需要在 EBR Javascript /第三方代码部分中创建和添加代码。您需要将AA部分中的任何AA变量设置为常规javascript变量,而对于数据元素 return true;语法,则使用%data_element% javascript语法。

我不确定你要做什么样的延迟,但是这里有一个100毫秒的延迟作为一个例子(根据截图中显示的内容):

_satellite.getVar('data_element')

答案 1 :(得分:0)

如果您的网站上有很多此类事件需要更好地控制网页浏览调用,我建议您使用直接呼叫规则并中止初始AA PV呼叫。事实上,为单页面应用程序(SPA)或等待ajax返回搜索结果时创建“全局页面加载”规则是很常见的 - 例如

以下是在搜索结果页面规则中使用直接调用规则的jQuery示例,该规则将在ajax完成并返回后触发:

Javascript: jQuery - wait for callback and call DC rule

/* Ajax Detection on SRP */ 
    $(document).ajaxComplete(function( event, xhr, settings ) {
    _satellite.track('my_pageView_rule_here')

})

希望这有帮助。