我已经创建了一个基于事件的规则-
在 adobe analytics 部分我设置了 s.t call 但我怎样才能延迟这个调用 - “s.t call”
这里我附上了一张我实际设置的截图。
最佳答案
DTM 当前不提供延迟 s.t
(或 s.tl
)触发基于事件的规则 (EBR) 的方法,所以你将不得不编写自己的 javascript,最终进行 s.t
调用。
由于您的屏幕截图显示了您的 EBR 中的 Adobe Analytics (AA) 部分,听起来您在 DTM 中将 AA 设置为工具。 DTM 允许您在工具的 AA 部分的自定义代码部分中引用 AA s
对象,但它没有获取 AA s
引用的官方方法> 该范围之外的对象。
因此,为了实现这一点,您必须将 s
对象放入 Tool 配置中的全局 (window
) 范围内。您可以通过在 AA Tool config
window.s = s;
(或者如果您在工具配置中将 namespace 更改为其他内容,请改用它)。
接下来,关于使用 this
的注意事项 - 我注意到您在 Page Name 的屏幕截图中有 %this.getAttribute(data-search-pagename)%
。因为你想延迟 s.t
调用,无论你在做什么(例如 setTimeout
,将它弹出到某个 ajax 回调函数中,等等)几乎肯定会让你退出this
正确引用 EBR 所基于的元素的范围,因此您将无法再使用 this
来填充页面姓名。
要绕过这个
,请转到EBR 的Conditions 部分。在规则条件> 标准下,选择数据:自定义。在自定义代码框中,您可以添加以下内容:
_satellite.setVar('data_search_pagename',this.getAttribute('data-search-pagename'));
return true;
上面的代码会将 data-search-pagename
属性值推送到名为“data_search_pagename”的 Data Element(或者根据您的约定随意命名) . return true;
部分将始终使此条件为真,因此它对您的规则是“不可见的”,实际上不会影响规则是否应该触发。
最后,在 EBR 中,您将不使用 AA 工具部分(在该部分选择禁用选项)。相反,您需要在 EBR 的 Javascript/第三方标签 部分创建和添加您的代码。您需要将 AA 部分中的任何 AA 变量设置为常规 javascript 变量,对于 Data Element %data_element%
语法,请改用 _satellite .getVar('data_element')
javascript 语法。
我不确定你想要什么样的延迟,但这里有一个 100 毫秒的延迟示例(基于你的屏幕截图中显示的内容):
window.setTimeout(function() {
var s = window.s;
s.pageName = _satellite.getVar('data_search_pagename');
s.channel = _satellite.getVar('util_channel');
s.t();
},100);
关于javascript - 如何在 adobe DTM 中延迟 s.t 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46526518/