Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌分析;跟踪出站点击;怎么用?_Javascript_Html_Google Analytics - Fatal编程技术网

Javascript 谷歌分析;跟踪出站点击;怎么用?

Javascript 谷歌分析;跟踪出站点击;怎么用?,javascript,html,google-analytics,Javascript,Html,Google Analytics,我读了这篇关于跟踪横幅上的出站链接的文章,例如: 因此,我将此代码添加到我的href的onClick事件中: javascript: pageTracker._trackPageview('/outbound/top_banners/banner_name'); 这够了吗 因为我读过一些地方,所以在执行任何javascript之前,我需要一个“linkdelay”函数,或者在文档的头中的某个地方 另外,在GA(界面)中,我可以在哪里查看点击 感谢问题出在这里:Google Analytic

我读了这篇关于跟踪横幅上的出站链接的文章,例如:

因此,我将此代码添加到我的href的onClick事件中:

 javascript: pageTracker._trackPageview('/outbound/top_banners/banner_name');
这够了吗

因为我读过一些地方,所以在执行任何javascript之前,我需要一个“linkdelay”函数,或者在文档的
头中的某个地方

另外,在GA(界面)中,我可以在哪里查看点击


感谢

问题出在这里:Google Analytics记录和报告的每一项数据都被发送到GA服务器,该服务器位于客户端请求的uu utm.gif的请求URL组件中。函数u.trackPageview()将数据收集/连接到请求URL以及请求本身。换句话说,如果不调用_trackPageview(),则不会向GA服务器发送任何数据

因此,问题是GA请求(如上)是否在与出站链路相关联的请求之前处理。如果不是,那么GA不会记录对出站链接的点击,这不是您想要的

所以你想要的是延迟,只是稍微长一点——足够让GA请求发生,但足够短,让用户不会注意到延迟——出站链接请求

在你的Q中发布的代码和下面的代码之间有一些区别——所有的差异都指向这个“竞争条件”

首先,请注意,onClick处理程序的返回值设置为“false”——防止客户端浏览器(立即)导航到

第二个差异是对setTimeout的调用。传入的第三个参数“100”是延迟毫秒数

第三,onclick处理程序(fnx)创建自己的跟踪对象,因此不依赖已在别处初始化的页面跟踪器对象

您的第二个问题是,您在GA浏览器中的何处查看这些单击?使用GA,您可以通过两种不同的方式跟踪事件——使用_trackEvent()或_trackPageView()

通过第二种方式跟踪出站链接(“点击”显示的不是事件,而是页面视图(“虚拟页面视图”是GA顾问等最常使用的术语,表示作为页面视图跟踪的内容,但实际上不是)。因此,您将看到这些点击与其他页面视图一起报告,即在内容中(以及左侧面板中的三个主要标题“流量和访问者”)。您如何判断该报告中的哪些行引用了这些出站单击?页面字段的值(通常是最左边的列标题)将是出站链接的url。当然,一旦您知道了这一点,您就可以创建一个高级段或自定义报告,甚至创建一个新的概要文件,以单独报告这些内容

<script type="text/javascript">
    function fnx(that) {
        try {
            var pageTracker=_gat._getTracker("UA-YOURACCOUNTHERE-PROFILE");
            pageTracker._trackPageview("http://www.outbound_link.com");
            setTimeout('document.location = "' + that.href + '"', 100)
     }catch(err){}
    }
</script>


<a href="www.outbound_link.com" onclick='fnx(this);return false;'>"Take Me Here"</a>

函数fnx(即){
试一试{
var pageTracker=_gat._getTracker(“UA-YOURACCOUNTHERE-PROFILE”);
页面跟踪器._trackPageview(“http://www.outbound_link.com");
setTimeout('document.location=“”+that.href+'”,100)
}捕获(错误){}
}

这是我的100%工作解决方案,用于跟踪所有出站链接(我喜欢jQuery,所以您需要将jQuery.js脚本添加到页面)

此脚本提供指向GA like:/outing/http/www.example.com的所有出站链接。 为了获得更好的体验,您需要为此链接创建高级段。使用参数创建它:“页面”以“/outgoing/http”开头。
这就是全部!现在您有了出站链接的完整统计信息。

此解决方案将允许您单击带有
target=''blank'
的链接,此外,还允许您在任何链接上设置数据属性,并让这些属性自动发送到GA

$('a').bind('click', function( event ) {
  var target = $(this).attr('href');
  if ($(this).attr("data-event-category") !== undefined && $(this).attr("data-event-label") !== undefined) {
    gtag('event', 'click', {
      'event_category': $(this).attr("data-event-category"),
      'event_label': $(this).attr("data-event-label"),
      'event_callback': function(){handle_redirect($(this), event);}
    });
  } else {
    handle_redirect($(this), event);
  }
});

function handle_redirect(element, event) {
  var target = element.attr('href');
  var regExp = new RegExp("//" + location.host + "($|/)");
  var isLocal = (target.substring(0,4) === "http") ? regExp.test(target) : true;
  var url = target;
  if(isLocal===true) {
    return;
  } else {
    event.preventDefault();
    gtag('event', 'click', {
      'event_category': 'outbound',
      'event_label': window.location.href + ' --> ' + url,
      'transport_type': 'beacon',
      'event_callback': function(){element.unbind( "click"); element[0].click();}
    });
  }
}

谢谢道格的好回答。所以我实际上不需要事件跟踪?如果我理解正确,有两种跟踪方式,一种是你的例子,另一种是“事件”。对吗?没错——这两种方式通常在博客文章中被称为“事件跟踪”和“虚拟页面浏览”。现在编辑我的问题以强调这一点。不过,还有一个问题:如果我设置了一个“高级段”,其中只包含我需要的页面浏览量(出站点击),那么这些页面浏览量是否会从页面浏览总量中减去?也就是说,如果“www.link.com”有1000个页面浏览量,并且在我设置段之前总共有10000个Pviews,那么在我创建的段中会有1000个页面浏览量,在“所有访问”中仍然有10000个页面浏览量吗?我的问题是,我想,我怎样才能把这些完全分开,这样数据就不会混在一起?不,这些页面浏览量不会被减去。清理页面浏览帐户的一种方法是“标记”这些页面浏览,以便在配置文件级别轻松过滤。函数的_trackPageview()只接受一个参数(默认值等于请求URL,但您可以通过传入任何字符串(例如“CV”)来选择不使用默认值,这只是一些特殊的名称,可以简化过滤。
$('a').bind('click', function( event ) {
  var target = $(this).attr('href');
  if ($(this).attr("data-event-category") !== undefined && $(this).attr("data-event-label") !== undefined) {
    gtag('event', 'click', {
      'event_category': $(this).attr("data-event-category"),
      'event_label': $(this).attr("data-event-label"),
      'event_callback': function(){handle_redirect($(this), event);}
    });
  } else {
    handle_redirect($(this), event);
  }
});

function handle_redirect(element, event) {
  var target = element.attr('href');
  var regExp = new RegExp("//" + location.host + "($|/)");
  var isLocal = (target.substring(0,4) === "http") ? regExp.test(target) : true;
  var url = target;
  if(isLocal===true) {
    return;
  } else {
    event.preventDefault();
    gtag('event', 'click', {
      'event_category': 'outbound',
      'event_label': window.location.href + ' --> ' + url,
      'transport_type': 'beacon',
      'event_callback': function(){element.unbind( "click"); element[0].click();}
    });
  }
}