【问题标题】:Validate Omniture document.write()'s are efficient and non-stacking验证 Omniture document.write() 是否高效且不堆叠
【发布时间】:2015-08-04 20:06:16
【问题描述】:
我想确定对于每个新调用,对 document.write() 的 omniture 调用都已从 DOM 中无效/清除。
标准:
我想看看用 Adobe Omniture call(s.t() call) 写入 DOM 的内容,例如
我想确保在添加每个新调用之前清除/取消 DOM 写入
如何证明 DOM 值无效/清除。
【问题讨论】:
标签:
report
adobe
analytics
adobe-analytics
document.write
【解决方案1】:
我假设您正在谈论页面代码的这一部分:
/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
var s_code=s.t();if(s_code)document.write(s_code)//--></script>
Adobe Analytics (Omniture) 跟踪通过创建图像对象向收集服务器发出请求。当您使用 URL 设置 imageObject.src 属性时,现代浏览器会发出请求。使用document.write() 的原因是为了适应如果不是通过简单地将值设置为imageObject.src 来发出请求。
基本上,AA 代码检查imageObject.src 是否成功加载了返回的图像。如果是这样,s.t() 返回一个空字符串。如果不是,s.t() 返回一个完整的img 标签,它从document.write() 添加到 DOM。
这个document.write() 回退是为了适应旧版浏览器。 “旧”是指 IE4 旧。如果您不关心跟踪那么旧的浏览器(提示:没人关心),您可以将所有“触发”代码缩减为单个 s.t() 调用(甚至无需分配给 s_code)。
所以要回答您的问题,除非您使用的是古老的浏览器,否则实际上没有任何文档写入 DOM。但是如果您是在一个古老的浏览器上......不,没有代码可以删除以前附加的东西。这让我...
..你真的在问什么? IOW,为什么你试图找出/确保它已被删除?我怀疑您可能真正要问的是想要确保先前设置的 AA 变量不会在后续请求中弹出。这是一个公平的问题,但这与请求本身没有任何关系。但是你需要澄清这一点。