0


我一直怀疑 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 都是 Hx 版本。

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

4

1 回答 1

2

s.t()是构建请求 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,您有“顶部”代码,即脚本包含,然后是“底部”代码,即_satellite.pageBottom()调用。

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

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

于 2015-02-04T14:39:21.627 回答