2012/01/11

Google Analytics Ajax 變更

Google Analytics Logo

目前很多網頁技術為了節省空間以及效能上的考量,會大量使用 Ajax 方式在同一個頁面撈取資料,頁籤尤其是最常使用的例子,Google 流量分析是絕大多數網站用來統計流量的工具,如何做到 Ajax 撈取資料時也可以同時列入 Pageview 呢,方式如下。

Google 範例

我們以 jQuery 的 Tabs 為例:

<!DOCTYPE HTML>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Tabs</title>
    <link media="all" rel="stylesheet" href="css/smoothness/jquery-ui-1.8.16.custom.css" type="text/css" />
    <script src="js/jquery-1.6.2.min.js" type="text/javascript"></script>
    <script src="js/jquery-ui-1.8.16.custom.min.js" type="text/javascript"></script>
    <script type="text/javascript">
        $(function() {
            $('#tabs').tabs({
                select: function(ev, ui) {
                    window.location.hash = ui.tab.hash;
                    _gaq.push(['_setAccount', 'UA-XXXXX-X']);
                    _gaq.push(['_trackPageview', window.location.href]);
                }
            });
        });
    </script>
    <script type="text/javascript">
      var _gaq = _gaq || [];
      _gaq.push(['_setAccount', 'UA-XXXXX-X']);
      _gaq.push(['_trackPageview']);

      (function() {
        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
      })();

    </script>
</head>
<body>
    <div id="tabs">
        <ul>
            <li><a href="#content1">content 1</a></li>
            <li><a href="content2.html" title="content2">content 2</a></li>
            <li><a href="#content3">content 3</a></li>
        </ul>
        <div id="content1">content 1</div>
        <div id="content3">content 3</div>
    </div>
</body>
</html>

原理很簡單,當選取了 tabs 之後,再次觸發 GA 的 track 功能,我先將 anchor 還原回去 url,再將 url 變數塞進 trackPageview 的變數裡面,你或許不想將 anchor 放置於超連結頁面,但這也代表你每點選一次就要自己指定網址一次,所以讓他自己去抓取是最方便的,當然,已經加上 anchor 了照理說應該也不用塞網址進變數,但我怕會有 lag 情況,這樣可以買雙保險。

沒有留言: