试图跟踪用户电子邮件中的点击次数

时间:2010-10-07 07:28:53

标签: php javascript google-analytics

我的问题如下:

我正在尝试计算新闻稿中广告的点击次数。问题是我不能在电子邮件中包含js - 这是可以理解的。所以我通过编写这一小段代码找到了解决方法:

<script type="text/javascript" src="http://www.factmag.com/wp-content/themes/modularity_/js/jquery-1.3.2.min.js"></script>

<script type="text/javascript">

    function getUrlVars()
    {
        var vars = [], hash;
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
        for(var i = 0; i < hashes.length; i++)
        {
            hash = hashes[i].split('=');

            if($.inArray(hash[0], vars)>-1)
            {
                vars[hash[0]]+=","+hash[1];
            }
            else
            {
                vars.push(hash[0]);
                vars[hash[0]] = hash[1];
            }
        }

        return vars;
    }

                function redirect()
                {
                    var link = getUrlVars()["page_url"];
                    setTimeout('document.location = "' + link + '"', 100)
                }
</script>
<body onload="javascript:redirect();"></body>


<script type="text/javascript">

 var _gaq = _gaq || [];
 _gaq.push(['_setAccount', 'UA-4340871-1']);
 _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>

它托管在我们的服务器和简报中,广告代码具有以下格式:

<a href="http://www.example.com/example_ad_counter/?utm_source=banner6&utm_medium=banner&utm_campaign=banner&page_url=ad_url"><img src="ad_img_url" style="border:1px solid #000;"></a>

所以我想在这里做什么:

  1. 用户点击电子邮件中的广告。
  2. 他带着这个脚本进入页面。
  3. Google Analytics会计算跟踪它所需的数量。
  4. 脚本会将用户重定向到广告客户的页面。
  5. 现在这是交易 - 谷歌分析在这里没有计算。我的猜测是我需要在google js中添加一些内容才能这样做,但不知道是什么。有人可以帮我这个吗?感谢。

1 个答案:

答案 0 :(得分:1)

您希望确保在调用Google代码后调用重定向。目前,您已在onLoad上运行它。 yC在对可能存在竞争条件的问题的评论中是正确的,但推动setTimeout将无法完全解决竞争条件。

您可以尝试在google将自身插入页面后调用重定向功能。

这里的代码:

(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标记,然后将分析网址加载到其中。 Brendon建议关闭异步是正确的,但后来我建议在var s = document行之后(在函数内部)添加重定向调用,并希望这会让google有足够的时间来完成其肮脏的工作在重定向之前。

如果这不起作用,请坚持yC的建议并进一步推迟超时。只要知道重定向延迟正在与谷歌的脚本加载然后运行所花费的时间竞争,这是不可预测的。我可能会把setTimeout放在我建议直接调用重定向函数的地方。这意味着它甚至不会开始计算延迟,直到谷歌的分析脚本被添加到页面。