javascript - Google Analytics jQuery 跟踪外部链接 - _gaq & ga 未定义

标签 javascript jquery google-analytics

我想使用 Google Analytics 跟踪我网站上的外部链接。

我在网站标题中添加了 Google Analytics 代码:

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

我可以查看是否有人在我的网站上... 之后,我添加了 jQuery 脚本来检查是否有人单击外部链接。

//Link Tracking
(function($)
{
    $('a.liexternal, a.liinternal, .wp_rp_content ul li a').click(function(e)
    {
        //Aktuelle URL
        var actual_url = window.location.href;
        //Angeklickte URL
        var clicked_url = $(this).attr('href');
        //Checken ob der Link bereits getrackt wurde (je Seitenaufruf)
        if(!e.isDefaultPrevented())
        {
            //Verhindere die Default Eventaktion (Linkklick = Seitenaufruf)
            e.preventDefault();
            //Manuelle Funktion um den Seitenaufruf nach Tracking zu bewirken
            function loadPage()
            {
                document.location = clicked_url;
            }
            //Callback Funktion um den Seitenaufruf nach Tracking durchzuführen
            //Unterschied zwischen Classic & Universal Analytics beachten!
            _gaq.push(['_set', 'hitCallback', loadPage]);

            if($(this).hasClass('liexternal'))
            {
                //_gaq.push(['_trackEvent', actual_url, 'External link', clicked_url]);
                ga('send', 'event', actual_url, 'External link', clicked_url, {'hitCallback':loadPage});
            }
            else if($(this).hasClass('liinternal'))
            {
                //_gaq.push(['_trackEvent', actual_url, 'Internal link', clicked_url]);
            }
            else if($(this).hasClass('wp_rp_title'))
            {
                //_gaq.push(['_trackEvent', actual_url, 'Internal related post', clicked_url]);
            }
            else
            {
                loadPage();
            }
        }
        else
        {
            return true;
        }
    });
})(jQuery);

如果我单击链接,我会收到以下问题报告:

错误:ReferenceError:ga未定义

希望你能帮助我。

最佳答案

您调用的库是较旧的经典 GA 库,使用“ga.js”名称以及“_gaq”对象即可证明这一点。但是,您尝试使用 Universal Analytics 方法通过“ga”方法发送事件(即 ga('send','event', ....))。您正在做的是将两个版本混合在一起。您应该考虑弃用经典代码,转而使用通用代码。

这是您尝试使用 ga 对象的位置(您已注释掉 _gaq 行):

if($(this).hasClass('liexternal'))
        {
            //_gaq.push(['_trackEvent', actual_url, 'External link', clicked_url]);
            ga('send', 'event', actual_url, 'External link', clicked_url, {'hitCallback':loadPage});
        }

如果您决定继续使用经典 GA,那么您还应该坚持使用“_gaq”方法调用。

关于javascript - Google Analytics jQuery 跟踪外部链接 - _gaq & ga 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32206644/

相关文章:

jquery - 是什么导致了这种奇怪的顶部边距定位边缘情况?

google-analytics - 如何在 AMP 页面中获取用于谷歌分析的 anchor 标记文本?

javascript - Android WebView 编译表单并使用 Javascript 提交

javascript - 使用复选框名称选择/取消选择复选框

javascript - 使用 CORS 请求设置 Cookie

javascript - AngularJS 指令 - Controller 是否总是在链接函数运行之前实例化?

javascript - 如何使用 JavaScript 格式化 JSON 数据

javascript - JQuery 自动数字集不起作用

iphone - 分析:什么是p502i和无线转码器设备?

javascript - 将 Google Analytics 跟踪代码放在 <head> 的较高位置会提高准确性吗?