我正在构建 AngularJS 应用程序,这些应用程序具有公共(public) header ,其中包含指向每个应用程序的链接:
<a href="https://app1.company.com">App1</a>
<a href="https://app2.company.com">App2</a>
每个应用程序都在自己的子域上运行,当用户单击标题上的链接时,页面会重定向到该应用程序。
我必须使用链接跟踪用户操作,例如Omniture 的 onClick
事件(但问题也适用于 Google Analytics)。当我添加调用函数将事件发送到 Omniture 的 onClick
事件时,例如:
<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;
},
该函数异步执行并立即返回。然后标准链接的行为开始:页面被重定向到“href”属性中定义的 URL。新页面加载速度非常快(大约 70 毫秒),但 AJAX 对 Omniture 的请求尚未执行:都是异步的。
我认为使用事件作为链接是不正确的方法,应该使用查询参数,例如:
<a href="https://app1.company.com?iLink=header-app1">App1</a>
但很难说服一些人。
跟踪链接事件的良好做法是什么?
最佳答案
更改您的函数以包含较短的超时(可能您也可以让它返回 false 以抑制默认链接行为,并通过位置对象进行重定向)。
Google Analytics 已命中回调,这些回调在发送对 Google 的调用后执行,您可能需要查看 Adobe Analytics 是否有类似的东西(因为这可用于在发出跟踪调用后进行重定向)。
事件跟踪和查询参数是否可以互换取决于您的用例(它们当然测量不同的东西)。然而,事件跟踪是一种广为接受的链接跟踪方式。
关于javascript - 使用事件的轨道链接 - 竞赛条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30181087/