Javascript 自定义事件数据中未定义跟踪程序

Javascript 自定义事件数据中未定义跟踪程序,javascript,analytics,Javascript,Analytics,我试图在页面加载上实现Woopra自定义事件数据,并使用它们的 我曾尝试在PageReady上推送事件,但它总是告诉我woopratracker未定义,但当我尝试在Click事件上使用它时,它工作正常,我认为加载woopra库有延迟,但我在PageReady上调用它的函数,这意味着我的调用应该等待PageReady执行! 我已经设置了超时,并在1秒后调用了相同的函数,它工作得很好,但仍然不符合逻辑,有什么想法吗??谢谢:)你说得对-你正在加载页面之前致电woopraTracker。他们网站上最新

我试图在页面加载上实现Woopra自定义事件数据,并使用它们的 我曾尝试在PageReady上推送事件,但它总是告诉我woopratracker未定义,但当我尝试在Click事件上使用它时,它工作正常,我认为加载woopra库有延迟,但我在PageReady上调用它的函数,这意味着我的调用应该等待PageReady执行!
我已经设置了超时,并在1秒后调用了相同的函数,它工作得很好,但仍然不符合逻辑,有什么想法吗??谢谢:)

你说得对-你正在加载页面之前致电woopraTracker。他们网站上最新的代码片段是async,这意味着如果您在此代码之后立即调用woopraTracker,它很可能会失败,因为
wsc.async=true
会告诉浏览器在不等待此脚本初始化的情况下继续。如果您事先知道要跟踪的内容,请将该代码放入woopraReady

在本例中,这正是他们所做的:。看起来您已经找到了此文档,但是您是否将代码放入
woopraReady
并使用本地
tracker
变量而不是全局
woopracker
<加载脚本后将调用code>woopraReady,这样您就不会遇到问题

如果您有其他跟踪事件的东西,那么包装
woopraTracker.trackEvent()
,以防由于用户速度太快或woopra加载时出错而无法加载脚本也无妨

您可以定义自己的包装器,而不是直接调用woopraTracker:

var pushWoopraEvent = function(e) {
  // Don't screw us over if Woopra failed to load or hasn't loaded yet
  if (typeof woopraTracker === 'object') {
    woopraTracker.pushEvent(e);
  }
};
pushWoopraEvent({name: 'Rate Song', stars: 5});

你说得对-你在页面加载之前打电话给woopraTracker。他们网站上最新的代码片段是async,这意味着如果您在此代码之后立即调用woopraTracker,它很可能会失败,因为
wsc.async=true
会告诉浏览器在不等待此脚本初始化的情况下继续。如果您事先知道要跟踪的内容,请将该代码放入woopraReady

在本例中,这正是他们所做的:。看起来您已经找到了此文档,但是您是否将代码放入
woopraReady
并使用本地
tracker
变量而不是全局
woopracker
<加载脚本后将调用code>woopraReady,这样您就不会遇到问题

如果您有其他跟踪事件的东西,那么包装
woopraTracker.trackEvent()
,以防由于用户速度太快或woopra加载时出错而无法加载脚本也无妨

您可以定义自己的包装器,而不是直接调用woopraTracker:

var pushWoopraEvent = function(e) {
  // Don't screw us over if Woopra failed to load or hasn't loaded yet
  if (typeof woopraTracker === 'object') {
    woopraTracker.pushEvent(e);
  }
};
pushWoopraEvent({name: 'Rate Song', stars: 5});