2015-08-25 2 views
0

Наш сайт использует mixpanel для отслеживания.Проверьте, была ли загружена библиотека Mixpanel

var mixPanelId = mixpanel.get_distinct_id(); 
$('#trial, #order').each(function() { 
    $(this).append("<input type='hidden' value='"+mixPanelId+"' name='MixpanelId' />"); 
}); 

Однако в случае, если mixpanel не загружен, главный объект не имеет get_distinct_id. Что было бы самым правильным способом справиться с этой ситуацией?

До сих пор я делаю нормальную проверку JS свойство (но мне интересно, если Mixpanel имеет более правильный способ сделать это):

mixpanel.hasOwnProperty('get_distinct_id') 

ответ

1

Правильный способ - использовать свойство 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') 
0

Я не знаю, если mixpanel имеет OnLoad (или так) callback (havn't видел один в ссылке), так что вы можете сделать, это intervalling, чтобы проверить, установлена ​​ли переменная.

Осторожно: Это немного грязно для использования.

var _mixpanelcomplete = setInterval(function(){ 
    if(mixpanel.hasOwnProperty('get_distinct_id')) 
    { 
     clearInterval(_mixpanelcomplete); 
     //init your stuff here 
    } 
},100); 
Смежные вопросы