如果用户导航离开页面,如何确保加载Google Analytics?

时间:2011-08-02 03:57:33

标签: javascript asynchronous google-analytics

我不确定当包含异步版Google Analytics的网页未完全加载但用户关闭浏览器或导航到其他网页时会发生什么。

如果分析没有按照我的假设进行记录,那么可以采用哪些方法来确保分析?

如果是的话,它是如何运作的?

2 个答案:

答案 0 :(得分:0)

您可以在关闭窗口之前检查Google分析是否已加载

<script type="text/javascript">

window.onunload = checkIfAnalyticsLoaded;

function checkIfAnalyticsLoaded() {
  if (window._gat && window._gat._getTrackerByName()) {
    // Do tracking with new-style analytics
  } else if (window.urchinTracker) {
    // Do tracking with old-style analytics
  } else {
    // Probably want to cap the total number of times you call this.
    setTimeout(500, checkIfAnalyticsLoaded();
  }
}    

</script>

答案 1 :(得分:0)

这可能是不可能的。您可以通过跟踪他们添加到页面的资源来对Google Analytics分析工具进行反向工程,如下所示:

var googleAnalyticsDidTheThing = false;
// ga_src is the src to a script that Google dynamically adds to your page
// this is your asynchronous code
var ga_src = "something.google.com/ga.js";
var ga_script;
var id = setInterval(function () {
  var scripts = document.getElementsByTagName("script");
  for (var i=0, len=scripts.length; i<len; i++) {
    var script = scripts[i];
    if (script.src === ga_src) { ga_script = script; break; }
  }

  var cb = function () {
    googleAnalyticsDidTheThing = true;
  };

  ga_script.onload = cb;
  // This one's for IE
  ga_script.onreadystatechange = function () {
    if (this.readystate === "complete") cb();
  }
}, 50);

但问题是只能让你到达那里。您可以使用window.onunload作为@nidhin提及来检查是否已完成。但是,由于javascript是单线程的,因此一次只能进行一个进程。因此,我认为您无法阻止用户退出页面而不会阻止ga_script在后​​台运行的能力。因此,您可以查看Google是否完成了自己的工作,但实际上无法确保Google能够完成。

然而,您可以向您自己的服务器发送一些信息(页面可能会离开,但数据仍会被发送)并收集有关实际执行此操作的用户数量的统计信息,以了解您的错误边际是。如果你真的有决心,你甚至可以尝试自己做一些跟踪。