跟踪链接使用事件 - 竞争条件

时间:2015-05-12 03:08:49

标签: javascript angularjs javascript-events google-analytics adobe-analytics

我正在构建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>

但很难说服标记球员。

跟踪链接上的活动有什么好的做法?

2 个答案:

答案 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)中。