我的客户希望在他们的Rails 3.2应用程序上设置一个复杂的混合面板跟踪系统,该系统包含广泛的backbone.js功能。
我想将mixpanel功能抽象为某种模块(而不是在现有代码库中散布调用)。
其中一个要求是mixpanel调用在成功操作之前不会被触发,所以我认为我不能将mixpanel调用附加到DOM元素。
我的另外想法是在javascript中创建某种中介对象,订阅需要跟踪的各种骨干事件。但是,我需要跟踪的事件中只有大约一半是主干,这让我觉得我根本不认为我可以在js中使用mixpanel。
也许是一个侦听rails模型的lib类?
有任何想法或建议吗?
谢谢!
答案 0 :(得分:7)
我们在六个月前遇到了同样的问题,并决定构建一个开源的JavaScript库,它将在我们使用的所有分析服务中抽象出Mixpanel的功能,包括KISSmetrics,Google Analytics,Chartbeat等。
您可以在http://segmentio.github.com/analytics.js
查看结果是一个简单的API,您可以在一行代码中调用analytics.track()或analytics.identify(),并将数据发送给所有不同的提供者。
该库还具有辅助功能,如analytics.trackLink()和analytics.trackForm(),可以更轻松地跟踪出站点击和表单提交,这通常会导致页面在事件发送之前重新加载。这些功能会让事件轻微延迟。
答案 1 :(得分:1)
您当然可以使用Ruby libraries或ActiveRecord callback中的Observer之一,使用用户ID与identify()
进行关联。
另一种选择是在客户端上通过AJAX执行操作,然后在success
回调中触发mixpanel事件。如果您需要将它们发送到其他页面,可以在超时后设置window.location
。