我创建了一个基于事件的规则 -
在adobe analytics部分,我设置了s.t呼叫,但如何延迟此呼叫 - “s.t call”
这里我附上了一个实际设置的屏幕截图。
答案 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')
})
希望这有帮助。