我的查询是我有一个重定向到另一个页面的链接。在webkit浏览器中,如何在重定向发生之前强制执行sitecatalyst服务器调用(脚本执行)?
我正在使用sitecatalyst作为门户网站。我有 配置自定义链接调用以包含doneAction参数 在webkit浏览器上成功完成呼叫(如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
答案 0 :(得分: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
函数作为第4个参数传递,它应该是第5个参数(使用null或空字符串作为第4个占位符)navigate
而不是navigate()
。你这样做的方式是调用函数并将函数的结果作为参数传递。 s.tl
需要函数的实际函数或引用,它将调用函数。公平地说,Adobe文档被拼错:它显示包含在引号中的示例不起作用。 navigate
中,而不是search
中。 答案 1 :(得分:1)
用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>
答案 2 :(得分:0)
链接跟踪是一种恐龙形式的跟踪,因为如果您没有在用户体验之前进行分析,这些数字几乎不准确。我不明白的是,为什么不在下一页而不是链接上测量这个,除非你无法控制下一步?
关于你的问题:关于如何在执行事件之前阻止链接跟踪的前几个例子非常可靠,但请记住,如果你有其他JS代码绑定,请确保不要破坏它。至于语法,您可以将所有变量作为对象传递给s.tl函数,而无需为s-object设置linkTrackVars和linkTrackEvents,如果您在动态页面上使用代码,则可能会对事件产生负面影响。
E.g。
...
var data = {
linkTrackVars="prop11,events",
linkTrackEvents="event6",
prop11=keyword,
events="event6"
};
s.tl(this, "o", "Search", data, "navigate");
...
注意:您无法在标准报告中实际使用道具和事件。根据您在Crayon评论中粘贴的代码,我可以看到您正在使用eVars,因此我认为该示例并不准确。