在哪里' s'在DTM中使用AppMeasurement时缓存的对象

时间:2014-12-03 22:35:24

标签: adobe-analytics

Omniture的基本页面跟踪功能s.t()不是为AJAX实现而设计的。与onclick s.tl()函数不同,它具有s.linkTrackVars和s.linkTrackEvents的一些门控指令,s.t()函数只是将每个缓存的属性延续到下一个调用以及更远的调用。

我曾经能够使用ClearVars函数来清空所有s对象的属性,但现在我正在使用AppMeasurement并让DTM使用该库的最新版本来管理我的实现 - 我想保留它做 - 我不能调用s对象。我得到了相同的“ReferenceError:s未定义”,另一个人询问here!。

我尝试在该帖子中遵循Crayon Violent的说明,但我似乎无法找到DTM在Adobe调用之间存储缓存值的位置。这段代码:

window.s = new AppMeasurement();    

让我改变/清除s的属性,但这不是我正在寻找的。当我调用下一个AJAX s.t()函数时,所有缓存的值仍然存在。

1 个答案:

答案 0 :(得分:7)

根据我使用DTM和AA的经验,DTM"原生集成"的错误,警告和解决方法已经无止境。 AA。这就是为什么我或多或少地决定我能做的最好的事情就是自己管理lib或者将AA视为第三方脚本(100%通过规则实现它,只是忽略它可用作为一个工具)。

正如我在你的回答中提到的那样,如果您自己管理库,那么该行代码只能在window命名空间中公开AA对象。当您配置DTM来管理库时,它将实例化AA对象本身,它将被隐藏在自己的代码中(老实说,我不知道为什么DTM会这样做,考虑到AA放置了许多其他全局命名空间中DTM不对执行任何操作的变量。

AFAIK没有文件记载的方法可以参考它,但我发现有一件事似乎对我有用 - 作为免责声明来掩盖我自己的屁股我没有正式认可:使用风险自负< / strong> - 是使用以下内容来获取它的参考:

var s = _satellite.getToolsByType('sc')[0].getS();

这使用getToolsByType方法将SiteCatalyst(Adobe Analytics)对象的数组设置为DTM中的工具。它通过循环_satellite.tools并将_satellite.tools[n].settings.engine与您传递给getToolsByType的内容进行比较来完成此操作。

然后我使用[0]获取数组中的第一个,假设只配置了一个(大多数人只做一个)。然后getS()对象根据DTM中的设置将s对象拉到一起。所以,从那里开始,你可以用它来做事,包括使用s.clearVars()