Rails:用于跟踪会话不一致的Javascript

Jac*_*ham 5 javascript ruby-on-rails mixpanel

我的Rails应用程序中有一些JS代码,可以在新会话中向Mixpanel发出跟踪事件.

从理论上讲,在任何其他事件被触发之前,我应该首先看到"新会话"事件.但在一些访问中,我没有看到"新会议"事件,这意味着它在某些情况下没有被解雇.

以下代码有什么问题?

$(function(){
  var currentLocation = window.location.hostname;
  var lastLocation = document.referrer;
  if (lastLocation.indexOf(currentLocation) > -1) {
  } else {
    mixpanel.track("New Session", {});
  }
  mixpanel.track("Page View", {});
});
Run Code Online (Sandbox Code Playgroud)

ney*_*oid 4

如果您使用 Turbolinks,则在第一页加载后不会触发就绪事件,因此您需要绑定到自定义 Turbolinks 事件,如下所示page:load

var ready;
ready = function() {
  var currentLocation = window.location.hostname;
  var lastLocation = document.referrer;
  if (lastLocation.indexOf(currentLocation) > -1) {
  } else {
    mixpanel.track("New Session", {});
  }
  mixpanel.track("Page View", {});
};

$(document).ready(ready);
$(document).on('page:load', ready);
Run Code Online (Sandbox Code Playgroud)

对于Rails 5,事件名称更改为turbolinks:load