2013-05-03 37 views
4

我的查询是我有一个链接重定向到另一个页面。在webkit浏览器中,如何在发生重定向之前强制sitecatalyst服务器调用(脚本执行)完成?SiteCatalyst:跟踪Webkit浏览器上的自定义链接

我正在使用sitecatalyst作为入口。我有 已将自定义链接调用配置为在webkit浏览器上包含 成功调用完成的doneAction参数(如Adobe指南中所述)。

的按钮的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> 

然而,即使在此之后,我在自定义链接跟踪收到错误。重定向发生在通话完成之前。

请帮助。提前致谢。

问候, Harshil

回答

5

好了,首先有一些问题你如何实现它。这里是它应该如何看起来像一个例子:

<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个占位符)
  • 应该navigatenavigate()。你做到这一点的方式是,你正在调用函数并将函数的结果作为参数传递。 s.tl需要实际的功能或对某个功能的引用,并且它会调用该功能。公平地说,Adobe文档是错误的:它显示用引号括起来的示例不起作用。
  • 重定向应该放置在navigate而不是search
+0

..okay?有没有问题或你有什么? – 2013-05-06 15:54:20

+0

对不起。我错误地发布了这个。我正在尝试您提出的更改。一旦完成,我会尽快告诉你。非常感谢答复。 – 2013-05-07 05:46:35

+0

蜡笔, 非常感谢您的帮助。这现在可行! 除了where,我的s.tl()调用不在某个事件处理程序中。在这种情况下,它不起作用。 以下是这种情况的代码:(在多个评论中发布,因为它超过了允许的字符限制) – 2013-05-08 11:19:02

1

与javascript函数

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; 
    }); 
} 

更换链接的href或请尝试以下

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

链接跟踪跟踪的恐龙形式的数字几乎没有准确的这些如果您没有在用户体验之前进行分析,则需要几天。我不明白的是,除非你无法控制下一步,否则你为什么不在下一页而不是链接上测量它?

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

E.g.

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

注意:您不能在标准报告中实际使用道具和事件。根据您向Crayon发表评论的代码,我可以看到您使用的是eVars,所以我认为该示例并不准确。

+0

虽然一般情况下我会同意跟踪链接点击目标其他页面,你已经跟踪通常不是你应该做的事情,国际海事组织如果有合法的需要,跟踪clic来自目标着陆页的k通常也不是一个好主意。您无法通过单击该链接来了解访问者是否登录到目标页面,除非您有代码,不允许访问者访问该页面,除非先单击该特定链接。网站很少以这种方式编码,除了在转换页面或漏斗中的步骤(即使多次.. – 2014-05-19 13:32:06

+0

..网站没有编码)。即使你使用url参数来标记链接,但仍然不能保证访问者通过点击原始页面上的链接与书签并直接进入,或者链接被传递或显示在serp等中 – 2014-05-19 13:33:30

+0

这就是为什么必须点击数据才能设置数据,但请阅读下一步。 URL参数不适合这种需求,而是第一方Cookie或会话存储方法。我同意点击和下一页跟踪都有其弱点,但从我的角度来看,跟踪所有点击无法确认我们点击的点击次数多于跟踪所有点击的链接,因为根据不可靠性的方法。 – 2014-06-02 14:40:09