繁体   English   中英

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

[英]Trying to track number of clicks in user's emails

我的问题如下:

我正在尝试计算新闻稿中广告的点击次数。 问题是我不能在电子邮件中包含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. 脚本将用户重定向到广告商的页面。

现在这是交易 - 谷歌分析在这里没有计算。 我的猜测是我需要在google js中添加一些内容才能这样做,但不知道是什么。 有人可以帮我这个吗? 谢谢。

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

谷歌将自己插入页面后,您可以尝试调用重定向功能。

这里的代码:

(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);
})();

...实际上是google为您的网页添加新的script标记,然后将分析网址加载到其中。 Brendon建议关闭异步是正确的,但后来我建议在var s = document行之后(在函数内部)添加重定向调用,并希望这将给google足够的时间来完成其脏工作并在重定向之前。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM