WoopraTracker 未在自定义事件数据中定义

WoopraTracker is not defined in custom event data

本文关键字:数据 定义 事件 自定义 WoopraTracker      更新时间:2023-09-26

我正在尝试在页面加载时实现 Woopra 自定义事件数据,并且我正在使用他们的指南我尝试在页面就绪上推送事件,但它总是让我没有定义 woopratracker,但是当我尝试使用它时 onClick 事件它工作正常,我认为加载 woopra 库有延迟,但是我调用它的函数在页面就绪,这意味着我的调用应该等待页面就绪后才能执行!我已经设置了超时并在 1 秒后调用了相同的函数,它工作正常,但仍然不合逻辑,有什么想法吗??谢谢:)

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

在这个例子中,这正是他们所做的:http://www.woopra.com/docs/tracking/custom-event-data/。看起来您已经找到了此文档,但是您是否将代码放入woopraReady并使用局部tracker变量而不是全局woopraTracker? 加载脚本后,将调用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});