0

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

4

1 回答 1

3

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

在这个例子中,这正是他们所做的:http ://www.woopra.com/docs/tracking/custom-event-data/ 。看起来您已经找到了这个文档,但是您是否将代码放入woopraReady并使用局部tracker变量而不是全局变量woopraTrackerwoopraReady脚本加载后将被调用,因此您不会遇到遇到的问题。

如果你有其他跟踪事件的东西,如果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});
于 2012-05-03T00:31:07.953 回答