【问题标题】:SiteCatalyst : Tracking Custom links on Webkit browsersSiteCatalyst : 跟踪 Webkit 浏览器上的自定义链接
【发布时间】:2013-04-27 16:14:03
【问题描述】:

我的问题是我有一个重定向到另一个页面的链接。在 webkit 浏览器中,如何强制 sitecatalyst 服务器调用(脚本执行)在重定向发生之前完成?

我正在将 sitecatalyst 用于门户。我有 配置自定义链接调用以包含 doneAction 参数 在 webkit 浏览器上成功调用完成(如 Adob​​e 指南中所述)。

按钮的onClick事件自定义链接代码如下:

<script language="javascript" >
function search(keyword)
{
var s=s_gi('testing');
s.linkTrackVars="prop11,events";
s.linkTrackEvents="event6";
s.prop11=keyword;
s.events="event6";
s.tl(this,'o','Search',navigate());

window.location=searchresults.html;
}
</script>

<script language="javascript" >
function navigate()
{
return false;

/*To induce a delay to ensure that image request is sent to Adobe before the
user leaves the page.(As given in Adobe guide - code release H.25))
Code version H.25 (released July 2012) includes an overloaded
track link method ( s.tl ) that forces WebKit
browsers to wait for the track link call to complete.)*/
}
</script>

但是,即使在此之后,我在自定义链接跟踪中也遇到了错误。重定向发生在呼叫完成之前。

请帮忙。提前致谢。

问候, 哈希尔

【问题讨论】:

    标签: web-analytics web-analytics-tools adobe-analytics


    【解决方案1】:

    好的,首先,您的实现方式存在许多问题。以下是它的外观示例:

    <a href="searchresults.html" onclick="search('someKeyword');return false;">search</a> 
    
    <script type='text/javascript'>
    function search(keyword) {
      var s=s_gi('testing');
      s.linkTrackVars="prop11,events";
      s.linkTrackEvents="event6";
      s.prop11=keyword;
      s.events="event6";
      s.tl(this,'o','Search',null,navigate);
      return false;
    }
    
    function navigate(){
      window.location="searchresults.html";
    }
    </script>
    

    几点

    • 您实际上并没有发布链接或您使用的任何调用search 函数的东西,所以我有一个链接作为示例。
    • navigate 函数应该是第 5 个参数时,您将它作为第 4 个参数传递(使用 null 或空白字符串作为第 4 个的占位符)
    • 应该是navigate 而不是navigate()。你这样做的方式是调用函数并将函数的结果作为参数传递。 s.tl 需要实际函数或对函数的引用,它将调用该函数。公平地说,Adobe 文档是拼写错误的:它显示了用引号括起来的示例,这是行不通的。
    • 重定向应该放在navigate,而不是search

    【讨论】:

    • ..好吗?有什么问题吗?
    • 对不起。我错误地发布了这个。我正在尝试您建议的更改。我一完成就会让你知道。非常感谢您的回复。
    • 蜡笔,非常感谢您提供急需的帮助。这现在有效!除了在哪里,我的 s.tl() 调用不在某个事件处理程序中。在这种情况下,它不起作用。以下是这种场景的代码:(由于超出了允许的字符限制,因此在多个 cmets 中发布)
    • 函数 LogIn() { var s=s_gi('testing'); s.linkTrackVars="事件"; s.linkTrackEvents="event3"; s.events="event3"; s.tl(true,'o','登录尝试');登录=假;用户名="";密码=""; username=prompt("用户名:","");用户名=用户名.toLowerCase();密码=提示(“密码:”,“”);密码=密码.toLowerCase();如果(密码==“密码”){登录=真; var s=s_gi('测试'); s.linkTrackVars="eVar1,eVar5,events"; s.linkTrackEvents="event4"; s.eVar5="登录成功"; s.events="event4"; s.tl(this,'o','登录成功',null,navigate);返回假; }
    • if (loggedin==false) { var s=s_gi('testing'); s.linkTrackVars="事件"; s.linkTrackEvents="event5"; s.events="event5"; s.tl(true,'o','登录失败'); alert("无效登录!"); } } 功能导航(){ var v1 = getQuerystring('referrer'); if (v1==1) window.location="Page 9.html?referrer=1";否则 window.location="主页.html?ref=3"; }
    【解决方案2】:

    用javascript函数替换链接href

    function trackLink(e) {
        nextUrl = e.href;
        e.href = "javascript:sendData('" + nextUrl + "')";
    }
    
    function sendData(url) {
        s.tl(this, "o", "Link Name", null, function() {
            window.location.href = url;
        });
    }
    

    或尝试以下方法

    function sendData(obj) {
        s.tl(obj, "o", "Link Name", null, "navigate");
        return false;
    }
    
    <a href="new.html" onclick="sendData(this);return false;">Link</a>
    

    【讨论】:

      【解决方案3】:

      链接跟踪是一种恐龙形式的跟踪,因为如果您不将分析放在用户体验之前,这些数字现在几乎不准确。我不明白的是,你为什么不在下一页而不是链接上衡量这个,除非你无法控制下一步?

      关于你的问题:之前关于如何在事件执行之前防止链接跟随的例子非常可靠,但请记住,如果你绑定了其他 JS 代码,请务必不要破坏它。至于语法,您可以将所有变量作为对象传递给 s.tl 函数,而无需为 s-object 设置 linkTrackVars 和 linkTrackEvents,如果您在动态页面上使用代码,这可能会对事件产生负面影响。

      例如

      ...  
      var data = {
         linkTrackVars="prop11,events",
         linkTrackEvents="event6",
         prop11=keyword,
         events="event6"
      };
      s.tl(this, "o", "Search", data, "navigate");
      ...
      

      注意:您实际上不能在标准报告中同时使用道具和事件。根据您在 cmets 中粘贴到 Crayon 的代码,我可以看到您正在使用 eVars,因此我认为该示例并不准确。

      【讨论】:

      • 虽然总的来说我同意跟踪针对您已经跟踪的其他页面的链接点击通常不是您应该做的事情,如果有合法需要,IMO,跟踪来自目标着陆的点击页面通常也不是一个好主意。您无法知道访问者是否通过单击该链接到达目标页面,除非您的代码不允许访问者访问该页面,除非首先单击该特定链接。网站很少以这种方式编码,除了转化页面或漏斗中的步骤(即使如此多次......
      • ..site 没有为此编码)。即使您要放置一个 url 参数来标记链接,它仍然不能保证访问者通过单击原始页面上的该链接而不是书签并直接访问或链接被传递或显示在一个 serp 等中到达那里.
      • 这就是为什么必须在点击时设置数据,但在下一步阅读。 URL 参数不适合这种需要,而是第一方 cookie 或会话存储方法。我同意点击跟踪和下一页跟踪都有其弱点,但在我看来,跟踪有效的链接比跟踪我们无法确认点击次数的所有点击更好,因为不可靠性方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-06
      • 1970-01-01
      • 2012-11-09
      • 2012-01-03
      • 1970-01-01
      • 2011-11-06
      相关资源
      最近更新 更多