Javascript 将Mixpanel与chrome扩展集成(无浏览器操作)

Javascript 将Mixpanel与chrome扩展集成(无浏览器操作),javascript,google-chrome-extension,mixpanel,Javascript,Google Chrome Extension,Mixpanel,我已经建立了一个chrome扩展,将内容注入特定页面。它没有浏览器操作,因此没有像mixpanel这样稳定的地方来存放内容,尽管我不确定这是否是问题的一部分。 我根据上一个SO问题设置CSP (f,b)若(f,b)函数(f,b)若(f,b)若(f,b)若(f,b)若(f,b)若(f,b)若(f,b)若(f,b)若(f,b)若(f,b,b)若(f,b,b)若(f,b,b,b,b)若(f,b,b,b,b,b,b,b)若(f,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b

我已经建立了一个chrome扩展,将内容注入特定页面。它没有浏览器操作,因此没有像mixpanel这样稳定的地方来存放内容,尽管我不确定这是否是问题的一部分。 我根据上一个SO问题设置CSP

(f,b)若(f,b)函数(f,b)若(f,b)若(f,b)若(f,b)若(f,b)若(f,b)若(f,b)若(f,b)若(f,b)若(f,b,b)若(f,b,b)若(f,b,b,b,b)若(f,b,b,b,b,b,b,b)若(f,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,c.toString=函数(b){var a=“mixpanel”;“mixpanel”!==d&&(a++=”+d);b |(a++=“(存根)”);返回a};c.people.toString=function(){return c.toString(1)+“.people(存根)”};i=”禁用跟踪跟踪页面查看跟踪链接跟踪表单注册一次别名取消注册标识名称设置设置人员配置设置人员设置一次人员增量人员追加人员跟踪收费人员清除收费人员删除用户拆分(“”);
对于(g=0;g目前,我坚持使用HTTP API,这是我基于上述博客使用的代码。我希望这只是一个临时解决方案,直到我能够找到解决错误的方法

var api = 'https://api.mixpanel.com';
var analytics = window.app = window.app || {};
var mixpanel = {};
analytics.init = function init(token, user) {
  mixpanel.token = token;
  mixpanel.distinct_id = user.email;
}
analytics.track = function track(event) {
  console.log(event, mixpanel);
  var payload = {
    event: event,
    properties: {
      distinct_id: mixpanel.distinct_id,
      token: mixpanel.token
    }
  };
  var data = window.btoa(JSON.stringify(payload));
  var url = api + '/track?data=' + data;
  $.get(url);
}
一旦我从chrome收到用户电子邮件,我就初始化它

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    if (typeof request.user != 'undefined'){
      analytics.init('[my_id]', user.email);
      sendResponse({farewell: "userId"});
    }
  }
});
最后,我从我的应用程序中调用事件

analytics.track(“选中”+面板);

----编辑---- 我还跟踪代码与上述代码类似的客户。使用此代码调用:
analytics.engage()

analytics.engage = function engage() {
  var timestamp = Date.now();
  var payload = [
    {
    $token: mixpanel.token,
    $distinct_id: user.email,
     $ip: user.location.ip,
    $set_once: {
      "First login date": timestamp
    }
  },
  {
    $token: mixpanel.token,
    $distinct_id: user.email,
    $ip: user.location.ip,
    $set: {
      "Last login date": timestamp,
      $email: user.email,
      gender: user.gender,
      given_name: user.given_name,
      family_name: user.family_name,
      ip: user.location.ip,
    }
  }
  ];

  var data = window.btoa(JSON.stringify(payload));
  var url = api + '/engage/?data=' + data;

  $.get(url);
}