检查是否加载了 Mixpanel 库
Check if Mixpanel library has been loaded
我们的网站正在使用 mixpanel 进行跟踪。
var mixPanelId = mixpanel.get_distinct_id();
$('#trial, #order').each(function () {
$(this).append("<input type='hidden' value='"+mixPanelId+"' name='MixpanelId' />");
});
但是,如果未加载混合面板,则主对象没有 get_distinct_id。处理这种情况最正确的方法是什么?
到目前为止我正在做正常的 js 属性 检查(但我想知道 Mixpanel 是否有更正确的方法来做):
mixpanel.hasOwnProperty('get_distinct_id')
我不知道 mixpanel 是否有 onload(或类似)回调(在参考资料中没有看到),所以你可以做的是间隔检查是否设置了变量。
注意:使用起来有点脏
var _mixpanelcomplete = setInterval(function(){
if(mixpanel.hasOwnProperty('get_distinct_id'))
{
clearInterval(_mixpanelcomplete);
//init your stuff here
}
},100);
正确的方法是使用 init 属性,它会在库加载后触发。有关详细信息,请阅读 How to prevent get_distinct_id & get_property from returning undefined
mixpanel.init('token-id', {'loaded':function() {
var distinct_id = mixpanel.get_distinct_id();
}})
检查 属性 并不是处理情况的正确方法。您可以在加载库之前进行此检查。
mixpanel.hasOwnProperty('get_distinct_id')
这是我对那些试图 运行 代码依赖于混音面板 distinct_id 的人的建议:
function method1( var1, counter ) {
if ( typeof counter == "undefined" || counter == null )
var counter = 0;
try {
var mixpanel_distinct_id = mixpanel.get_distinct_id();
// Code that is dependent on distinct_id goes here
} catch(e) {
var max_attempts = 40; // How long do you want it to try before letting it fail
counter++;
if ( counter < max_attempts )
setTimeout( function(){ method1(var1, counter) }, 50);
}
}
我们的网站正在使用 mixpanel 进行跟踪。
var mixPanelId = mixpanel.get_distinct_id();
$('#trial, #order').each(function () {
$(this).append("<input type='hidden' value='"+mixPanelId+"' name='MixpanelId' />");
});
但是,如果未加载混合面板,则主对象没有 get_distinct_id。处理这种情况最正确的方法是什么?
到目前为止我正在做正常的 js 属性 检查(但我想知道 Mixpanel 是否有更正确的方法来做):
mixpanel.hasOwnProperty('get_distinct_id')
我不知道 mixpanel 是否有 onload(或类似)回调(在参考资料中没有看到),所以你可以做的是间隔检查是否设置了变量。
注意:使用起来有点脏
var _mixpanelcomplete = setInterval(function(){
if(mixpanel.hasOwnProperty('get_distinct_id'))
{
clearInterval(_mixpanelcomplete);
//init your stuff here
}
},100);
正确的方法是使用 init 属性,它会在库加载后触发。有关详细信息,请阅读 How to prevent get_distinct_id & get_property from returning undefined
mixpanel.init('token-id', {'loaded':function() {
var distinct_id = mixpanel.get_distinct_id();
}})
检查 属性 并不是处理情况的正确方法。您可以在加载库之前进行此检查。
mixpanel.hasOwnProperty('get_distinct_id')
这是我对那些试图 运行 代码依赖于混音面板 distinct_id 的人的建议:
function method1( var1, counter ) {
if ( typeof counter == "undefined" || counter == null )
var counter = 0;
try {
var mixpanel_distinct_id = mixpanel.get_distinct_id();
// Code that is dependent on distinct_id goes here
} catch(e) {
var max_attempts = 40; // How long do you want it to try before letting it fail
counter++;
if ( counter < max_attempts )
setTimeout( function(){ method1(var1, counter) }, 50);
}
}