• GTM课程
  • 博客
  • 服务
  • 资源资源
    • YouTube频道
    • 电子书和指南
    • GTM食谱
    • 查看所有资源
    • GTM社区
  • 关于
    • 关于
    • 联系
  • GTM课程
  • 博客
  • 服务
  • 资源资源
    • YouTube频道
    • 电子书和指南
    • GTM食谱
    • 查看所有资源
    • GTM社区
  • 关于
    • 关于
    • 联系

2019年7月2日

在Google跟踪代码管理器中探索Click元素变量

Google跟踪代码管理器提供了大量内置变量和用户定义变量,供您使用。当我发布 许多博客文章 关于用户定义的变量(我的意思是 许多 , 许多 , 许多 , 许多 …), this time, I’d希望聚焦于无声的内置变量英雄,单击“元素”。

为了吸引您,我可以说这个变量在GTM中具有一个具有相同功能的双变量,此外,Click 元件 还使我们能够使用GTM中功能最强大(但也很冒险)的功能之一。因此,请继续关注并继续阅读。

Google跟踪代码管理器电子书包

目录

  • 什么是Google跟踪代码管理器中的Click元素变量?
  • 点击元素数据从何而来?
  • 点击元素变量不是唯一的这种变量
    • 您还可以创建访问相同值的自定义变量
  • 为什么根本需要使用Click 元件 变量?
  • Example: 点击元素 + Matches 的CSSSelector
  • 点击元素变量有用的另一种情况
  • 探索gtm.element对象
    • 展开gtm.element对象
  • 最后的话

 

什么是Google跟踪代码管理器中的Click元素变量?

这是一个返回被单击元素的变量。默认情况下,在所有新的GTM容器中均禁用该功能,需要通过转至变量来启用它> Configure (in the 内置变量 部分)。然后,点击旁边的复选框 点击元素.

但是只是启用变量赢了’在预览和调试模式下执行任何操作。您还需要启用至少一个“Just links” 要么 “All element clicks” 触发。 If you’对这个过程不熟悉,请您阅读有关 使用Google跟踪代码管理器点击跟踪.

在 GTM预览和调试模式,此变量看起来确实具有误导性,有时甚至与Click URL相似,但这与事实相去甚远。

点击元素返回单击的对象。如果单击链接,则此变量将返回被单击的实际元素。它不仅包含其地址(如果有),还包含其属性和其他数据(对于非技术人员而言不一定可见)。

但是Google跟踪代码管理器预览和调试控制台不会显示这些其他属性。因此,有时,这两个变量不同的唯一证明是它们的类型:

 

点击元素数据从何而来?

它来自某些Google跟踪代码管理器’的默认自动事件侦听器。如果您至少有一个 只是链接, 所有元素点击, 表格提交 要么 元素可见性 触发时,它还启用(在后台的某个地方)其各自的自动事件侦听器,该侦听器开始侦听页面上发生的某些交互。

只是链接 侦听器侦听链接点击。 所有元素点击 侦听器正在侦听页面上任何元素的点击(不在iFrame中)。 表格提交 听取表单提交的内容。而且,正如您可能猜到的那样, 元素可见性 正在侦听屏幕上是否出现特定元素。

当这些侦听器发现交互时,它们会将某些数据推送到数据层。该数据与用户刚刚与之交互的元素有关。该dataLayer.push包括以下键:

  • gtm.element
  • gtm.element Classes
  • gtm.element Target
  • gtm.element Url
  • gtm.element Id

如果您转到GTM预览和调试模式>在数据层中,您可能会看到类似这样的内容(当然,值会有所不同)。

GTM中的内置变量(单击元素,单击类,单击目标,单击URL,单击ID)可以访问数据层变量中的每个键。  gtm.element Classes, gtm.element Target, gtm.element Url 和 gtm.element Id 是字符串(读“text content”) but the gtm.element 是包含更多信息的对象。不幸的是,那隐藏得很深,我们’我需要更深入地了解。但这将在稍后发生。

现在,您应该了解/记住以下几点:

  • 当自动事件侦听器(适用于单击,表单提交或元素可见性)将数据推送到数据层时,按下的键之一是  gtm.element
  • 数据层中的此值可以通过GTM中的Click 元件 变量访问(但不仅限于此)。— a bit later)
  • 在预览和调试模式下,Click 元件 看起来类似于Click URL变量,但它们完全不同。点击URL只是简单地返回一个字符串,它是一个网址(URL)。 点击元素实际上是一个被单击的元素,是一个对象,并且包含有关用户与之交互的元素的更多信息。

在接下来的章节中,我们’让我们看一下Click 元件 的替代方案,为什么Click 元件 是一个非常有用的变量,以及隐藏在其中的其他数据 gtm.element 目的。

点击元素变量不是唯一的变量

因此,如您所知,Click元素返回存储在数据层中的值作为  gtm.element  键。如果不存在这样的键,则变量将返回 未定义 .

我的一些读者肯定不会知道的是,GTM中还有另一个内置变量,该变量访问数据层中的相同密钥。那就是 … 请打鼓 … 表单元素。

是的,这两个变量访问相同  gtm.element 键入数据层(或更准确地说, 资料模型 )。实际上,所有Form和Click变量对都是相同的。他们访问相同的密钥:

  • gtm.element Target 被访问 点击目标 和 表单目标 变数
  • gtm.element Url 被访问  点击网址   和 表格网址   变数
  • gtm.element Classes 被访问 点击类  和   表格类 变数
  • gtm.element Id 被访问  点击编号   和   表格编号 变数
  • 最后,   gtm.element 被访问 点击元素  和   表单元素 变量。

为什么会这样呢?我不能代表GTM开发人员讲话,但我可以猜测。我认为这使GTM初学者更容易理解。为了跟踪点击,GTM用户必须启用点击触发器,然后激活点击变量。表单跟踪与上述过程相同。如果要使用内置的GTM表单提交触发器,则需要启用它,然后启用表单变量。

对于刚开始使用Google跟踪代码管理器的用户来说,这样的工作流程听起来更容易理解。 (但也许我的猜测是错误的)。

 

您还可以创建访问相同值的自定义变量

另外,您也可以创建用户定义的变量,其作用与上述的click和form变量相同。例如,如果您想创建自己的Click 元件 变量替代方法,请转到Variables> New >数据层变量,然后输入   gtm.element 。它’s存储在数据层中的密钥的名称。

点击元素和Form 元件 变量也都访问相同的键。这样就可以了,三个不同的变量返回相同的结果。您为什么要创建自己的用户定义变量来访问  gtm.element ?没有特别的原因。我只是想向您展示事物之间的联系。

 

为什么根本需要使用Click 元件 变量?

由于您已经知道Click 元件 变量会返回一个与用户进行交互的对象(例如,clicked元素,显示的元素或提交的表单),因此’是时候采取下一步了。那么这个变量在哪里有用呢?当您需要使用实际元素时。

最受欢迎的用例是“与CSS选择器一起”。例如,如果您想跟踪特定网站元素的点击,但没有一个具有唯一ID,则CSS选择器可能是一种解决方案。

“CSS ….what?”, you might ask. 的CSSSelectors are patterns that allow you to select any elements on a page. For example, if you wanted to track clicks 只要 of those elements that have the class “white-button” 但也属于您网站的红色侧栏小部件,因此常规的Click Classes变量不起作用。

但是,如果您将Click 元件 变量与 Matches 的CSSSelector 运算符,那是可能的。

如果您只是从Google跟踪代码管理器开始,而您以前从未听说过CSS选择器,那么我认为对于您来说,这个主题可能有点太难了。您还需要学习其他许多东西,例如:

  • GTM点击跟踪
  • GTM表单追踪
  • 一般Google跟踪代码管理器教程

 

Example: 点击元素 + Matches 的CSSSelector

无论如何,回到主要话题。我希望我赢了’下面的示例会对您造成太大的威胁。在我的另一本(更广泛的)指南中 GTM中的点击跟踪, I showed a case where 的CSSSelectors are really useful. Here it goes.

想像你’在电子商务网站上工作,并且您想跟踪 添加到购物车 按钮。该按钮没有任何链接(因此我们的   只是链接 触发器将不起作用)。我们所剩下的就是 所有元素点击  触发。

不幸的是,并非一切都那么容易。原来,一个按钮实际上由两个元素组成:按钮文本和按钮背景/矩形。

如果这两个元素具有相似的ID或类,请使用  点击编号   要么  点击类 变量可能仍然有效。看看下面的截图。

不同的元素-不同的ID

按钮的文字具有ID  添加到购物车 Text 而按钮的背景(框)具有ID  添加到购物车 .

这种情况仍然非常方便,您可以使用一个条件创建触发器( 点击编号  以“ 添加到购物车 ”开头)。但是,有时候,当没有ID或有用的Click类(阅读:CSS类)可用时,事情可能会变得更加复杂。如果一个元素实际上由5个或更多元素组成怎么办?

您可以为每个元素创建多个触发器,将其分配给一个标签,但这不是您应该采取的方式。您的容器必须尽可能的最佳,这就是为什么我们应该通过创建单击触发器并使用CSS选择器(如果可能)来解决这一问题的原因。

让’s see how this 作品 in action. We’ll apply 的CSSselectors to track  添加到购物车  按钮点击。看一下该按钮的代码(在下面的屏幕截图中)。

一个按钮中的两个元素

该按钮是使用名为HTML的HTML元素创建的  纽扣  (with the ID  添加到购物车 ),并且其直接子代是<span>包含按钮文本的元素。使用单个CSS选择器,我们可以指示Google跟踪代码管理器要跟踪其ID为的元素的点击  添加到购物车  以及我们要跟踪其所有子级(后代)的点击次数。

在GTM中,转到 扳机> New > 请点击 s > All 元件 s 并输入以下设置:

Matches 的CSSselector

Take note that we’re using 点击元素 as a variable because we are checking the entire clicked HTML element against our 的CSSSelector. Matches 的CSSSelector 作品 只要 与  点击元素  变量。

#添加到购物车  的CSSselector means that we are interested in clicks of ALL elements that have  添加到购物车  ID(完全匹配)。

逗号表示“或”。

#添加到购物车 *  CSS选择器意味着我们对具有以下内容的元素的所有后代的点击感兴趣  添加到购物车  ID(完全匹配)。在我们的例子中,按钮文本是具有ID的按钮的直接后代  添加到购物车 。 Simo Ahava已发布指南,解释了 Wildcard 的CSSSelectors.

如果您以前不了解CSS选择器,甚至不知道它们是什么,那么掌握CSS选择器的概念就不太容易。但是,至少了解一些基础知识确实会对GTM有所帮助。以下是供您深入研究的其他指南:

  • 的CSSSelectors
  • “Matches 的CSSSelector” Operator 在 GTM Triggers
  • 10 Useful 的CSSSelectors
  • 的CSSSelector Guide for Google Tag Manager

但是,另一方面,请记住 的CSSSelectors should be used with caution 否则,您的跟踪实施将非常不稳定且容易中断。

 

点击元素变量有用的另一种情况

总而言之,当您要使用实际元素(而不是其属性)时,应使用Click 元件 作为变量。例如Simo Ahava’他在博客文章中分享了一项技术 如何在Google跟踪代码管理器中捕获正确的元素.

在该解决方案中,他在此自定义JavaScript中使用了{{Click 元件 }}变量。

通过使用实际单击的元素,Simo’■自定义JS代码查找与某个CSS选择器匹配的最接近的元素。这是一项高级技术,但是有一天您很可能需要使用它。

 

探索 gtm.element 目的

让’进入此博客文章的最后一章。那么,存储在  gtm.element  目的?如果GTM预览和调试模式不允许我们怎么看?

好吧,您已经在浏览器中使用了控制台’s developer tools.

这项工作的前提条件:

  • 启用了至少一个 所有元素点击 在页面上触发 (任何设置都可以使用)。 只是链接 , 表格提交 , 要么 元素可见性 也会工作。
  • (可选)启用预览和调试模式。这不是必需的,但会使事情变得容易一些。

如果启用了点击触发器,请单击页面上的任何元素,以便  请点击 事件出现在GTM调试控制台中。出现了吗?没有?然后刷新预览模式,并确保您实际上已经启用了至少一个单击触发器。

如果   请点击  事件实际上出现了’太好了。现在转到浏览器’s开发人员工具,然后打开控制台。在Chrome(Windows)上,按F12,然后转到  安慰。  这里也有一些技巧 其它浏览器.

输入   dataLayer 。区分大小写。并击中  输入 .

单击黑色三角形以展开。这是页面上发生的所有dataLayer.push的列表。选择一个说  gtm.click  (如果您现在正在使用 所有元素点击 触发)。如果你’re working 与   只是链接 触发事件’s name is gtm.linkClick。表格提交 事件 name is gtm.formSubmit。 元素可见性 事件’s name is  gtm.element Visibility。

看到很多   gtm.click  事件?那’s,因为您单击了页面上的许多元素。如果要检查在GTM调试模式下也会看到的特定事件,请仔细查看该事件。在GTM预览和调试模式下,该数字将增加1。’如果开发人员不对产品进行一些讨厌的修改,那么事情通常会如何进行  dataLayer .

无论如何,当您发现正确的事件时,请通过单击它旁边的黑色三角形来展开它。

 

展开 gtm.element 目的

这是单击元素时侦听器将其推送到数据层的内容。

看到熟悉的东西了吗?  gtm.element Classes,gtm.elementId, 等。只有  gtm.element 旁边有一个黑色三角形,因为它包含一些其他数据。然后’s where we’re going.

点击黑色三角形(位于  gtm.element ) 你呢’将会看到很多可以访问的密钥。尽管其中的大多数对您来说似乎无法使用,但有几件事值得一提。

如果您深入了解  gtm.element 重点并扩大 parentElement 接着 班级名称 ,您将可以访问父元素’的类(例如,如果单击了该元素)。

同样适用于 parentElement 然后选择  ID .

那么,您如何在Google跟踪代码管理器中使用该信息?您只需要创建一个数据层变量并定义要访问的键的完整路径(以  gtm.element )。

对于上述示例,您应该输入  gtm.element .parentElement.className.

这将返回clicked元素的类。’的父元素。这也适用于通过“元素可见性”触发器或GTM“表单提交”触发器跟踪的表单的外观。

其他荣誉提名:

  • gtm.element .parentElement.innerText –返回父元素的纯文本
  • gtm.element .firstChild.id –返回第一个子元素的ID

此外,Bounteous小组创建的指南中也使用了这种技术, 使用Google跟踪代码管理器捕获提交的表单值.

 

最后的话

我最初计划编写有关Click 元件 的简短指南。但是我写的越多,我就越意识到还有其他事情值得一提。乍一看,这个变量看起来很无聊,几乎从未使用过。但这只是错误的认识。

这是您应该记住的关键要点。

  • 点击元素 访问   gtm.element  键入数据层
  • 与其他内置GTM 请点击 变量不同, 点击元素 返回一个对象(意味着它包含的数据比普通文本多得多)
  • 表单元素 和  点击元素 基本上是相同的变量实际上,所有Click变量及其对应的Form Variable都是相同的。
  • 您也可以创建自己的  元件  通过使用数据层变量来访问变量  gtm.element   键
  • 点击元素或Form 元件 是唯一支持以下内容的内置GTM变量: Matches 的CSSSelector 触发器中的运算符
  • 您可以探索其他哪些数据存储在  gtm.element 使用浏览器键’的开发人员工具(控制台)并向下钻取。然后,您可以通过创建数据层变量来访问这些键。

那 ’这次吧!有任何相关问题吗?评论部分随时为您服务。

朱利叶斯·费多罗维奇乌斯
在 Google跟踪代码管理器提示
9条评论
加里
  • 2019年7月2日
  • 回复

当您要创建触发器并且要单击的元素中包含许多元素时,如何应对“乐趣”。因此,具有包含要使用的数据的数据属性的div看起来像一个按钮,并且可能具有一个包含图标的跨度,另一个包含文本的跨度,该文本可能以粗体显示。因此,用户可以单击div,span,img或粗体元素,但所需的行为对所有对象都是相同的。也没有实际的链接元素,所有操作都使用javascript完成。

要求朋友:-)

    朱利叶斯·费多罗维奇乌斯
    • 2019年7月2日
    • 回复

    Hey, thanks for stopping by. Read this //www.simoahava.com/analytics/capturing-the-correct-element-in-google-tag-manager/. This is an exact solution you need. However, you need to have some 的CSSknowledge to make it work

      加里
      • 2019年7月22日
      • 回复

      谢谢朱利叶斯。该链接对我遇到的一些挑战很有用...对不起,我的朋友正在遇到...所以我将尽我所能。我想知道像这样遍历DOM的效率如何。我认为,需要与开发团队进行一两个工作来进一步解释这种情况。
      谢谢。

安东
  • 2019年7月2日
  • 回复

非常详尽的解释,很好!
发现微小错误:
“按钮的文本具有AddToCartText类,而按钮的背景(框)具有ID 添加到购物车 。”
两者都应为ID

    朱利叶斯·费多罗维奇乌斯
    • 2019年7月2日
    • 回复

    感谢您发现它。我会尽快修复。

伊维卡岛
  • 2020年7月13日
  • 回复

我不知道这是否与此帖子有关,但是我有以下问题/疑问:
我在页面上有3个产品:银,金和铂
选择任何选项(立即购买)时,/ 要么 der.php页面将打开(作为新页面)。
“立即购买”按钮包含同一组点击类别ID,点击文字名称...等。
唯一不同的是,“立即购买”按钮的表单代码如下所示

立即购买

形式中的“价值”仅不同:任何产品类型的银,金或铂
如何设置适当的触发器/标签来区分按下哪一个?
我希望我提供了足够的数据以获得正确的答案:)
谢谢!

伊维卡岛
  • 2020年7月13日
  • 回复

表格:
表单method =“ post” action =“ 要么 der.php”
纽扣 类型="submit" class="btn">Buy now<
输入样式="display:none" name="type" value="silver"

德瓦拉吉
  • 2020年7月31日
  • 回复

好文章!与点击跟踪相关的几个问题
1)我已使用Click类和URL过滤器设置了Click All 元件 触发器。当我查看它时,click类的值为'fab fa-facebook'。当我在GTM中的“单击所有元素”触发器中设置过滤器时,由于其中有空格,我的过滤器值是否应该用单引号引起来?

2)我使用Click Classes设置了包含“ fab fa-facebook”的点击过滤器。但是,当我在预览中运行GTM调试器时,当我单击该页面上的ANY链接时,事件摘要会显示一个click事件。我尚未设置在此事件上触发的代码。我以为click事件只会在满足过滤条件时触发,或者我误会了?

感谢你的帮助。

    德瓦拉吉
    • 2020年7月31日
    • 回复

    我测试并回答了自己的问题。
    1)设置过滤器值时不需要引号
    2)调试器显示所有click事件,但是只有在触发满足过滤条件的事件时才触发代码。

发表评论 取消回复

您的电子邮件地址不会被公开。 必需的地方已做标记 *

 

嗨,我是Julius Fedorovicius 并且在这里可以帮助您学习Google跟踪代码管理器和Google Analytics(分析)(但主要是GTM)。在这个激动人心的旅程中,与其他100 000多个每月访问量和14000多个新闻通讯订阅者一起加入。 阅读更多
基本资源


热门文章
  • -GTM表格追踪:7种有效方法
  • -dataLayer.push:指南
  • -GTM与Google Analytics(分析)
  • -GTM可以做的99件事
  • -常见的GTM错误
  • -数据层:终极指南
  • -适用于GTM的60多种自定义JavaScript
分析狂热
  • Google跟踪代码管理器课程
  • Google跟踪代码管理器食谱
  • Google跟踪代码管理器资源
  • Google跟踪代码管理器社区
  • 登录课程
关注Analytics Mania
  • 订阅新闻通讯
  • RSS订阅
最近的帖子
  • Google跟踪代码管理器教程+视频&免费的初学者电子书
  • Google Analytics(分析)4中的增强测量:指南
  • 使用Google跟踪代码管理器跟踪联系表7
分析狂热- Google Tag Manager 和 Google Analytics 博客 | 隐私政策
管理Cookie设置
<pre id="xdnnUbp" class="xqYriGB"><dir id="AqDTGUB" class="AVndzxT"><param id="oNWea7u" class="o47T79x"></param></dir></pre>



    <legend id="oHhcpDD" class="ok2jhwX"><frameset id="zUWh1A1" class="zWycy0v"><tr id="TDucnJT" class="TEITsnC"><q id="CJ4HIEo" class="C52uULO"></q></tr></frameset></legend>
    <xmp id="JiacyAs" class="JwPY3t1">