我正在尝试在页面加载时实现Woopra自定义事件数据,而我正在使用他们的guidelines 我试图在页面上推送事件但是它总是让我没有定义woopratracker,但是当我尝试使用onclick事件它工作正常时,我认为加载woopra库有一个延迟,但是我不是m在页面就绪时调用它的功能,这意味着我的调用应该在执行之前等待页面就绪! 我有settimeout并在1秒后调用相同的函数,它工作正常,但仍然不合逻辑,任何想法?谢谢:)
答案 0 :(得分:3)
你是对的 - 你在加载页面之前调用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});