自动 SiteCatalyst s_code 页内调用和 DTM 调用

Automatic SiteCatalyst s_code call in-page and by DTM


我一直怀疑在 SiteCatalyst s_code 内部,究竟是什么触发了页面加载时的第一个自动调用。

事实上,我遇到了两种不同的情况,这让我有点困惑。
通常,s_code 库会带有如下所示的页面底部代码:

<!-- SiteCatalyst code version: H.26.0.
Copyright 1996-2011 Adobe, Inc. All Rights Reserved
More info available at http://www.omniture.com -->
<script language="JavaScript" type="text/javascript" src="path_to/s_code.js"></script>
<script language="JavaScript" type="text/javascript">
/* You may give each page an identifying name, server, and channel on the next lines. */
/************* DO NOT ALTER ANYTHING BELOW THIS LINE ! **************/
var s_code=s.t();if(s_code)document.write(s_code)</script>
<script language="JavaScript" type="text/javascript">
if(navigator.appVersion.indexOf('MSIE')>=0)document.write(unescape('%3C')+'\!-'+'-')</script><noscript><img src="http://metrics...." height="1" width="1" border="0" alt=""/></noscript><!--/DO NOT REMOVE/-->
<!-- End SiteCatalyst code version: H.26.0. --><br/><br/>

我结束了这部分:var s_code=s.t();触发第一个自动调用(通过 t() 方法)但我想知道为什么需要 if(s_code)document.write(s_code)
删除这两个指令将导致在页面加载时停止任何自动调用。

当 s_code 由 DTM 提供服务时,似乎会在没有页面的情况下触发第一个调用-底部代码,仅由 s_code 库加载。
独立 s_code 和 DTM 都是 H.x 版本。

所以我最后的问题是:
- 为什么页面底部需要这部分 var s_code=s.t();if(s_code)document.write(s_code)
- 究竟是什么触发了自动 s_code 调用?
非常感谢。

s.t() is the actual "trigger" 构建请求 URL,并且在大多数情况下, 也会生成 请求。但是,非常旧的 IE 版本(实际上已经没有人关心了),它无法通过生成 img 对象来发出请求。因此,添加了 document.write 的额外代码,以迎合那些非常旧的 IE 版本(实际上已经没有人关心了)。

因此,除非您真的仍想迎合非常旧版本的 IE(我们说的是 IE1-IE4),否则页面代码可以减少为:

<script language="JavaScript" type="text/javascript" src="path_to/s_code.js"></script>
<script language="JavaScript" type="text/javascript">
/* custom vars here */

/* end custom vars */
s.t();
</script>

另一方面,对于 DTM,您有 "top" 代码,这是脚本包含,然后是 "bottom" 代码,这是 _satellite.pageBottom() 调用。

然后,当您将 Adob​​e Analytics 作为工具实施时(无论您是将 DTM 配置为自动处理库,还是您想自己将库代码放入代码框,或将其托管在您自己的位置), DTM 将自行调用 s.t()

DTM 实际进行 s.t() 调用的时间取决于您将其配置为在页面顶部还是页面底部触发。