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

ian*_*zer 5 mixpanel

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

$(document).ready(function($){  
    console.log("We have distinct id");
    console.log(mixpanel.get_distinct_id());
});
Run Code Online (Sandbox Code Playgroud)

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

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

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

bur*_*ish 10

从Mixpanel文章:

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

mixpanel.init('Project Token', {'loaded':function() {
    var distinct_id = mixpanel.get_distinct_id()}
});
Run Code Online (Sandbox Code Playgroud)

来源:如何防止get_distinct_id和get_property返回undefined