Omniture 的基本页面跟踪功能 s.t() 不是为 AJAX 实现而设计的。与 onclick s.tl() 函数不同,它具有一些带有 s.linkTrackVars 和 s.linkTrackEvents 的门控指令,s.t() 函数只是将每个缓存的属性永久保存到下一次调用及以后。
我曾经能够使用 ClearVars 函数来清空 s 对象的所有属性,但现在我正在使用 AppMeasurement 并让 DTM 使用该库的最新版本来管理我的实现——我想继续这样做——我无法调用 s 对象。我得到了另一个人询问的相同的“ReferenceError: s is not defined” here !。
我尝试按照该帖子中 Crayon Violent 的说明进行操作,但我似乎无法找到 DTM 在 Adobe 调用之间存储缓存值的位置。这段代码:
window.s = new AppMeasurement();
让我更改/清除 s 的属性,但这不是我要查找的 s。当我调用下一个 AJAX s.t() 函数时,所有缓存的值仍然存在。
最佳答案
根据我与 DTM 和 AA 合作的经验,DTM 对 AA 的“ native 集成”的错误、警告和解决方法没有止境。这就是为什么我或多或少决定我能做的最好的事情是要么自己管理库,要么将 AA 视为第 3 方脚本(100% 通过规则实现它,忽略它可用作工具)。
正如我在您链接的回答中提到的那样,该行代码仅适用于公开 window
中的 AA 对象。如果您自己管理库,则命名空间。当你配置 DTM 来管理库时,它会实例化 AA 对象本身,并将它埋在自己的代码中(老实说,我不知道 DTM 为什么这样做,考虑到 AA 在全局命名空间中放置了许多其他变量DTM 什么都不做)。
AFAIK 没有记录在案的方法来引用它,但是我发现一件事似乎对我有用 - 作为免责声明来覆盖我自己的屁股我不正式认可:使用风险自负 - 是使用以下内容来获取它的引用:
var s = _satellite.getToolsByType('sc')[0].getS();
这使用
getToolsByType
方法获取在 DTM 中设置为工具的 SiteCatalyst (Adobe Analytics) 对象数组。它通过循环遍历 _satellite.tools
来做到这一点。并比较 _satellite.tools[n].settings.engine
到您传递给的内容 getToolsByType
.然后我使用
[0]
获取数组中的第一个,假设只有一个配置(大多数人只做一个)。然后是getS()
对象将 s
拉到一起对象基于 DTM 中的设置。所以从那里,你可以用它做事,包括利用 s.clearVars()
关于adobe-analytics - 在 DTM 中使用 AppMeasurement 时缓存的 's' 对象在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27282967/