开发者

What is this obscure error in Google Analytics tracking code on a _trackEvent() call?

I am calling the Google Analytics _trackEvent() function on a web page, and get back an error from the obfuscated Google code. In Firebug, it comes back "q is undefined". In Safari developer console: "TypeError: Result of expression 'q' [unde开发者_如何学Pythonfined] is not an object."

As a test, I have reduced the page to only this call, and still get the error back. Besides the necessary elements and the standard Google tracking code, my page is:

<script>
  pageTracker._trackEvent('Survey', 'Checkout - Survey', 'Rating', 3);
</script>

Results is that error.

What's going on here?


This problem seems to occure when the page is not fully loaded yet: http://www.google.com/support/forum/p/Google+Analytics/thread?tid=4596554b1e9a1545&hl=en

The provided solution is to wait for pageTracker.cb

function trackEvent(target, action, opt_label, opt_value) {
  if(pageTracker && !pageTracker.cb) {
    setTimeout(function() {
      trackEvent(target, action, opt_label, opt_value);
    }, 200);
    return;
  }
  pageTracker._trackEvent(target, action, opt_label, opt_value);
}


Actually the answer no. 1 is not correct. That's because pageTracker.cb never gets set (it's an obfuscated property name) with other versions of GA.

You should call upon initialization: pageTracker._initData()


This looks like a bug in ga.js introduced when they added _initData() functionality to _trackPageview(). Unfortunately _initData() isn't actually called after the conditional. Hope they fix it before they deprecate_initData() for good.

e.g. This page suggests the above should work without calling _initData(): http://www.google.com/support/googleanalytics/bin/answer.py?hl=en&answer=55527

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜