analytics.js的SegmentIO开源版本设置问题 [英] Issues with SegmentIO open source version setup of analytics.js

查看:95
本文介绍了analytics.js的SegmentIO开源版本设置问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在从SegmentIO切换到他们的开源版本。我用这个博客文章作为指南,但它不是跟踪。任何人都可以看到这段代码的问题:

  window.analytics || (window.analytics = []); 
window.analytics.methods = ['identify','track','trackLink','trackForm','trackClick','trackSubmit','page','pageview','ab','alias' ,'ready','group','on','once','off'];
window.analytics.factory = function(method){
return function(){
var args = Array.prototype.slice.call(arguments);
args.unshift(method);
window.analytics.push(args);
return window.analytics;
};
};
for(var i = 0; i< window.analytics.methods.length; i ++){
var method = window.analytics.methods [i];
window.analytics [method] = window.analytics.factory(method);


analytics.load = function(callback){
var script = document.createElement('script');
script.async = true;
script.type ='text / javascript';
script.src ='https://assets.gonegreenstore.com.s3.amazonaws.com/js/analytics.min.js';
script.addEventListener('load',function(e){
if(typeof callback ==='function'){
callback(e);
}
},false);
var firstScript = document.getElementsByTagName('script')[0];
firstScript.parentNode.insertBefore(script,firstScript);
};

//继续从
之上analytics.load(function(){
analytics.initialize({
'Google Analytics':{
trackingId: 'UA-40148609-3'
}
});
});

analytics.page();


解决方案

来自博客的好的代码是错误的或过时的。事实证明,您无法真正加载开箱即用的开源版本。我修改了代码以使其工作。

要点: https://gist.github。 com / cyberwombat / 11008970

  //创建一个虚拟分析对象直到真实加载
window.analytics || (window.analytics = []);
window.analytics.methods = ['identify','track','trackLink','trackForm','trackClick','trackSubmit','page','pageview','ab','alias' ,'ready','group','on','once','off'];
window.analytics.factory = function(method){
return function(){
var args = Array.prototype.slice.call(arguments);
args.unshift(method);
window.analytics.push(args);
return window.analytics;
};
};
for(var i = 0; i< window.analytics.methods.length; i ++){
var method = window.analytics.methods [i];
window.analytics [method] = window.analytics.factory(method);


//加载分析异步
analytics.load = function(callback){
if(document.getElementById('analytics-js'))return;

//如果我们的虚拟对象
window.a = window.analytics;
var script = document.createElement('script');
script.async = true;
script.id ='analytics-js';
script.type ='text / javascript';
script.src =('https:'=== document.location.protocol?'https://':'http://')+'path / to / your / analytics.min.js' ;
script.addEventListener('load',function(e){
if(typeof callback ==='function'){
callback(e);
}
},false);
var first = document.getElementsByTagName('script')[0];
first.parentNode.insertBefore(script,first);
};

analytics.load(function(){

//载入初始化我们的集成
analytics.initialize({$ b $'Google Analytics':{
trackingId:'UA-XXXXXX-1'
}
});
//现在,将我们应用于我们的虚拟对象的任何内容复制到真实分析
, window.a.length> 0){
var item = window.a.shift();
var method = item.shift();
if(analytics [method])analytics [method] .apply(analytics,item);
}
});

analytics.page();


I am switching from SegmentIO to their open source version. I used this blog post as a guide but it's not tracking. Anyone see issue with this code:

  window.analytics || (window.analytics = []);
  window.analytics.methods = ['identify', 'track', 'trackLink', 'trackForm', 'trackClick', 'trackSubmit', 'page', 'pageview', 'ab', 'alias', 'ready', 'group', 'on', 'once', 'off'];
  window.analytics.factory = function (method) {
    return function () {
      var args = Array.prototype.slice.call(arguments);
      args.unshift(method);
      window.analytics.push(args);
      return window.analytics;
    };
  };
for (var i = 0; i < window.analytics.methods.length; i++) {
  var method = window.analytics.methods[i];
  window.analytics[method] = window.analytics.factory(method);
}

analytics.load = function(callback) {
  var script = document.createElement('script');
  script.async = true;
  script.type = 'text/javascript';
 script.src = 'https://assets.gonegreenstore.com.s3.amazonaws.com/js/analytics.min.js';
  script.addEventListener('load', function (e) {
    if(typeof callback === 'function') {
      callback(e);
    }
  }, false);
  var firstScript = document.getElementsByTagName('script')[0];
  firstScript.parentNode.insertBefore(script, firstScript);
};

// Continues from above
analytics.load(function () {
  analytics.initialize({
    'Google Analytics': {
       trackingId: 'UA-40148609-3'
     }        
  });
});

analytics.page();

解决方案

Ok code from blog was either wrong or outdated. Turns out you can't really load the open source version async out of the box. I have modified code to make it work.

Gist: https://gist.github.com/cyberwombat/11008970

// Create a dummy analytics object until real loaded
window.analytics || (window.analytics = []);
window.analytics.methods = ['identify', 'track', 'trackLink', 'trackForm', 'trackClick', 'trackSubmit', 'page', 'pageview', 'ab', 'alias', 'ready', 'group', 'on', 'once', 'off'];
window.analytics.factory = function(method) {
  return function() {
    var args = Array.prototype.slice.call(arguments);
    args.unshift(method);
    window.analytics.push(args);
    return window.analytics;
  };
};
for (var i = 0; i < window.analytics.methods.length; i++) {
  var method = window.analytics.methods[i];
  window.analytics[method] = window.analytics.factory(method);
}

// Load analytics async
analytics.load = function(callback) {
  if (document.getElementById('analytics-js')) return;

  // We make a copy if our dummy object
  window.a = window.analytics;
  var script = document.createElement('script');
  script.async = true;
  script.id = 'analytics-js';
  script.type = 'text/javascript';
  script.src = ('https:' === document.location.protocol ? 'https://' : 'http://') + 'path/to/your/analytics.min.js';
  script.addEventListener('load', function(e) {
    if (typeof callback === 'function') {
      callback(e);
    }
  }, false);
  var first = document.getElementsByTagName('script')[0];
  first.parentNode.insertBefore(script, first);
};

analytics.load(function() {

  // On load init our integrations
  analytics.initialize({
    'Google Analytics': {
      trackingId: 'UA-XXXXXX-1'
    }
  });  
  // Now copy whatever we applied to our dummy object to the real analytics
  while (window.a.length > 0) {
    var item = window.a.shift();
    var method = item.shift();
    if (analytics[method]) analytics[method].apply(analytics, item);
  }
});

analytics.page();

这篇关于analytics.js的SegmentIO开源版本设置问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆