我正在构建AngularJS应用程序,这些应用程序具有包含每个应用程序链接的公共标题:
<a href="https://app1.company.com">App1</a>
<a href="https://app2.company.com">App2</a>
每个应用程序都在自己的子域上运行,当用户单击标题上的链接时,页面会重定向到该应用程序。
我必须使用链接跟踪用户操作,例如使用Omniture的onClick事件(但问题也适用于Google Analytics)。当我添加一个调用函数的onClick事件来向Omniture发送事件时,例如:
<a href="https://app1.company.com" ng-click="trackLink('header-app1')">App1</a>
trackLink()是AngularJS服务的一个功能,简要实现:
trackLink: function (eVar8Code) {
s = this.getSVariable(s);
s.eVar8 = eVar8Code;
s.prop28 = s.eVar8;
this.sendOmnitureMessage(s, send, false);
return s;
},
该函数异步执行并立即返回。然后标准链接的行为开始了:页面被重定向到&#34; href&#34;中定义的URL。属性。新页面加载非常快(大约70毫秒),但是对Omniture的AJAX 请求尚未执行:它都是异步的。
我认为使用链接的事件是不正确的方法,应该使用查询参数,例如:
<a href="https://app1.company.com?iLink=header-app1">App1</a>
但很难说服标记球员。
跟踪链接上的活动有什么好的做法?
答案 0 :(得分:1)
将您的功能更改为包含一个短暂的超时(可能您会让它返回false以抑制默认链接行为,并通过位置对象重定向)。
Google Analytics(分析)点击了在发送Google电话后执行的回调,您可能希望查看Adobe Analytics是否有类似的内容(因为这可以在跟踪调用完成后用于重定向)。
如果事件跟踪和查询参数可以互换,则取决于您的用例(它们肯定会衡量不同的事物)。但是,事件跟踪是一种广为接受的链接跟踪方式。
答案 1 :(得分:0)
正如@Eike Pierstorff建议的那样 - 我使用了Adobe Analytics native library的功能来设置延迟(200毫秒),这使得对Adobe Analytics的调用有更好的成功机会:
HTML中的:
<a href="https://app1.company.com" data-omniture-link data-track-code="header-nav-deliveries-returns">App1</a>
在AngularJS服务中:
sendOmnitureMessageWithDelay: function (s, element, eVar8Code) {
var s = s_gi(s_account); // jshint ignore:line
s.useForcedLinkTracking = true;
s.forcedLinkTrackingTimeout = 200; // Max number of milliseconds to wait for tracking to finish
s.linkTrackVars = 'eVar8,prop28';
s.eVar8 = eVar8Code;
s.prop28 = eVar8Code;
var target = element;
if (!target) {
target = true;
}
s.tl(target, 'o', s.eVar8, null, 'navigate');
this.cleanOmnitureVars();
}
这里,element - 是HTML元素。
在99%的情况下它运行良好,但在调用Adobe之前页面加载的慢速和旧设备上存在问题。看来这个问题没有很好的解决方案,并且不能保证事件总是会记录在Adobe Analytics(或Google Analytics)中。