等待mixpanel JS lib准备就绪,这样我就可以获得用户distinct_id了

时间:2014-05-27 16:06:53

标签: mixpanel

我们希望使用MixPanel捕获我们网站上的事件,并且我试图获取用户的不同ID,因此我使用以下代码段:

$(document).ready(function($){  
    console.log("We have distinct id");
    console.log(mixpanel.get_distinct_id());
});

当尝试获取不同的id时,这会导致错误“未定义不是函数”。

我已经检查了调试器并且可以确认mixpanel对象没有get_distinct_id方法,但是如果我等到页面已加载然后在控制台中评估mixpanel.get_distinct_id(),我会得到不同的id没问题。

我只能猜测mixpanel对象尚未完成初始化。一旦mixpanel对象能够告诉我用户distinct_id,是否有我可以用来知道的回调或事件?

3 个答案:

答案 0 :(得分:10)

来自Mixpanel文章:

  

" [...]将一个配置对象传递给mixpanel.init()方法,该方法带有一个加载的参数和一个回调函数,该函数将在我们的库加载完成后立即执行。在回调函数中,您可以使用get_property()和get_distinct_id()方法,并确保它们仅在库加载完成后才执行。"

mixpanel.init('Project Token', {'loaded':function() {
    var distinct_id = mixpanel.get_distinct_id()}
});

来源:How to prevent get_distinct_id & get_property from returning undefined

答案 1 :(得分:1)

我在此处找到了一个代码段:https://gist.github.com/calvinfo/5117821,归功于https://gist.github.com/calvinfo,如下所示:

$(document).ready(function() {
  if ($("#mixpanel_distinct_id").length > 0) {
    var interval = setInterval(function () {
      if (window.mixpanel.get_distinct_id) {
        $("#mixpanel_distinct_id").val(window.mixpanel.get_distinct_id());
        clearInterval(interval);
      }
    }, 300);
  }
});

基本上,这允许您每300毫秒检查一次mixpanel对象是否已完成初始化并且get_distinct_id函数是否可用。

答案 2 :(得分:-1)

您从Cookie中获取district_id

cookie = document.cookie.split(";")[0];
distinct_id = cookie.substr(74,53);

但正确使用正则表达式 祝你好运!