我们希望使用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,是否有我可以用来知道的回调或事件?
答案 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);
但正确使用正则表达式 祝你好运!