链接器

链接器插件可简化跨网域衡量的实现过程,如适用于 analytics.js 的跨网域衡量指南中所述。

概览

通过在来源网域和目标网域之间共享唯一客户端 ID,使跨网域衡量得以实现。此流程分为两步:

  1. 来源网域需要确保指向目标网域的所有网址均包含来源网域的客户 ID。
  2. 目标网址需要知道在用户导航到该网址后检查该网址中是否包含客户 ID。

链接器插件通过为指向目标网域的网址添加链接器参数来完成此流程。链接器参数包含客户 ID 以及当前时间戳和编码在其中的浏览器元数据。时间戳和元数据可用于避免网址共享带来的问题

以下是链接器参数的示例:

_ga=1.199239214.1624002396.1440697407

在目标网域上,当所提供的 allowLinker 字段值为 true 时,会指示 analytics.js 检查网址中的链接器参数。如果找到了链接器参数且参数有效,则从该参数中提取和保存客户端 ID。

利用链接器插件,可通过自动和手动方式向网页上的链接和表单中的网址添加链接器参数。在大部分情况下,建议采用自动方式添加链接器参数。

自动添加链接器参数

要在来源网域上为指向目标网域的网址设置跨网域自动链接,必须请求链接器插件并调用其 autoLink 方法。

autoLink 方法可通过命令队列调用。

运行后,analytics.js 将监听对指向目标网域的链接的点击,并在导航即将开始之前,为这些链接添加链接器参数。有必要等待用户点击链接后再添加链接器参数,因为链接器参数的有效期只有两分钟。

如果您的网站上有表单指向目标网域,则应指定可选 decorateForms 参数并将其设置为 true

用法

ga('[trackerName.]linker:autoLink', domains, [useAnchor], [decorateForms]);

参数

名称 类型 是否必需 说明
domains Array[RexExp|string] 用于匹配网址的 hostname 的一组字符串或正则表达式,指示应对哪些网域应用自动链接。如果已传递字符串,analytics.js 将执行子字符串匹配,也就是说,example.com 将匹配指向 blog.example.com 的链接。
useAnchor boolean 如果为 true,链接器参数将添加到网址的定位点部分,而非查询部分。
decorateForms boolean 如果为 true,链接器插件将向表单提交(指向匹配 domain 参数的目标网址)添加链接器参数。

示例

// Loads the Linker plugin
ga('require', 'linker');

// Instructs the Linker plugin to automatically add linker parameters
// to all links and forms pointing to the domain "destination.com".
ga('linker:autoLink', ['destination.com'], false, true);

手动添加链接器参数

您可以通过 decorate 方法,为特定 <a><form> 元素手动添加链接器参数。仅在未使用上述 autoLink 方法时才需要使用该方法。

decorate

decorate 方法可通过命令队列调用。

务必尽量在导航即将开始之前才调用 decorate 方法,这一点很重要,因为链接器参数的有效期只有两分钟。多数情况下,应在事件处理程序中调用此方法。

用法

ga('[trackerName.]linker:decorate', element, [useAnchor]);

参数

名称 类型 是否必需 说明
element HTMLElement 要附加链接器参数的 <a><form> 元素。
useAnchor boolean 如果为 true,链接器参数将添加到网址的定位点部分,而非查询部分。

示例

// Loads the Linker plugin
ga('require', 'linker');

// Gets a reference to a link pointing to an external domain.
var destinationLink = document.getElementById('destination-link');

// Adds click handler that decorates `destinationLink`.
destinationLink.addEventListener('click', function() {
  ga('linker:decorate', destinationLink);
});

linkerParam

除了 decorate 方法外,您也可以通过 linkerParam 字段,手动获取跟踪器要使用的链接器参数。

ga(function(tracker) {
  var linkerParam = tracker.get('linkerParam');
});

配置网站以接受链接器参数

当用户到达目标网域上网址包含链接器参数的网页时,analytics.js 就必须知道应查找该参数。

创建跟踪器时,您可将 allowLinker 字段设置为 true,以指示目标网页查找链接器参数:

ga('create', 'UA-XXXXXX-X', 'auto', {
  allowLinker: true
});

双向跨网域衡量

在单向跨网域衡量中,用户流的特征是:用户总是先访问来源网域,然后才转到目标网域。上文中的说明即假设遇到的是这类用户流。

如果不知道您的用户会先访问哪个网域,则必须启用“双向跨网域衡量”,在这种情况下,每个网域都配置为可以作为来源网域,也可以作为目标网域。

要启用双向跨网域衡量,需要对这两个网域都启用自动链接,并将它们配置为接受链接器参数。

source.com 上:

ga('create', 'UA-XXXXX-Y', 'auto', {allowLinker: true});
ga('require', 'linker');
ga('linker:autoLink', ['destination.com']);

destination.com 上:

ga('create', 'UA-XXXXX-Y', 'auto', {allowLinker: true});
ga('require', 'linker');
ga('linker:autoLink', ['source.com']);

在所有网域上使用同一个代码段

为了进一步简化,您可以在 autoLink 方法中列出要衡量的所有可能的网域,从而在每个网域上使用同一个代码段:

ga('create', 'UA-XXXXX-Y', 'auto', {allowLinker: true});
ga('require', 'linker');
ga('linker:autoLink', ['source.com', 'destination.com']);