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

Cra*_*ner 5 adobe-analytics

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

我曾经能够使用ClearVars函数来清空所有s对象的属性,但现在我正在使用AppMeasurement并让DTM使用该库的最新版本管理我的实现 - 我想继续这样做 - 我无法调用s对象.我得到了另一个人在这里问到的"ReferenceError:s未定义" !

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

window.s = new AppMeasurement();    
Run Code Online (Sandbox Code Playgroud)

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

Cra*_*ent 7

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

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

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

var s = _satellite.getToolsByType('sc')[0].getS();
Run Code Online (Sandbox Code Playgroud)

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

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