Google 标签 - Javascript 每次点击都会改变变量值

Google Tags - Javascript variable value changing on every click

第一次与 Google Tag Manager 合作。我有一个基于按钮 class 的点击事件触发器,但它会在每次点击时执行。

我的变量 {{bookingUnit}} 的值是从页面上 HTML 的文本中获取的。这是一个自定义 Javascript 变量(returns 正确值):

function() {
    return $({{Click Element}}).closest('table')).find('td.rnc').text();
}

我必须检测到(第 3 方系统的)页面上的按钮点击被定义为:

<input type="submit" name="ctl00$plcBody$BookingFormGrid$ctl16" value="BOOK NOW" onclick="$('form').attr('action', 'DetailsEntry.aspx?bfid=c5efdee5-7280-4593-8256-564e9b7ac01a&amp;bfpid=8072faaa-c89f-4a63-be19-e54a91f0f1a0&amp;bfrtid=3d6e96c3-e557-4f85-97d1-c750787dc6d8&amp;arr=2019-03-07&amp;nts=3&amp;a=1&amp;c=0');WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;ctl00$plcBody$BookingFormGrid$ctl16&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" class="btn btn-primary bnow">

我有一个触发器如下:

Type: Click - All Elements
Fires On - Some Clicks

Click Classes - equals - btn btn-primary bnow
Click Element - equals - input

无论我在页面上的哪个位置单击,我都会看到事件触发:

gtm.click

然而我可以看到我的变量值每次都在更新(所以它似乎忽略了我的 Click Classes 触发条件并且仅在按下按钮时更新)。

我错过了什么?谢谢。

更新:使用 ,我改变了我的触发器:

Click Element - matches CSS selector - .btn .btn-primary .bnow

但仍然可以通过单击页面上的任意位置来更新变量。

听起来您的容器中有一个 Click - All Elements 触发器处于活动状态。每次单击鼠标都会触发。每次触发触发器时,所有变量都会在那时重新计算。所以最好的办法是在不使用时停用 Click - All Elements 触发器。

编辑:

  • 转到变量 > 配置内置变量
  • Select 以下:Click Element, Click Classes, Click ID, Click Target, Click URL, Click Text
  • 转到触发器 > 新建
  • 触发器类型:Click - All Elements
  • 此触发器在 Some Clicks
  • 时触发
  • Click Classes matches CSS selector .btn.btn-primary.bnow

更多技术细节 - GTM 不会将事件绑定到过滤器中 类 指定的元素。相反,它将事件绑定到文档,等待事件冒泡到页面的根元素,然后检查事件目标是否与您的过滤器匹配。

正如 vinoaj 所说,最终效果是每次单击页面上的任何位置时都会触发触发器。这也意味着 Click 元素每次都会更改,并且自定义变量中选择器的 return 值也会随之更改。

但是,仅当事件目标与触发器中的条件匹配时,连接到触发器的操作才会触发。所以这实际上应该不会给您带来问题。

这样做:

类型:单击 - 所有元素 触发 - 一些点击

单击 类 - 等于 - btn

只需使用一个 class 和一个条件。还要确保它是唯一具有 class 的按钮,或者只有您要跟踪的按钮具有 class.

在调试控制台中,您将始终看到事件 gtm.click 触发,但只有在具有特定条件的情况下单击按钮时才应发送变量。

您看到的 gtm.click 事件不是您的事件触发 - 它只是 GTM 的默认事件之一。如果您的代码已触发,您会在预览中看到您的代码名称。

听起来您想在每次触发器触发时向 GA 发送一个事件以及 {{bookingUnit}} 的值,如果是这样的话:

  • 创建一个 Google Analytics 标签 - 将其设置为 "events"。

从这里您可以:

  • 将变量与任何其他详细信息一起作为事件操作 你会想要发送。
  • 确保您已经为 Google 分析 ID 创建了一个变量,以便 link 活动到您的 GA 帐户。

完成此操作后,您可以将 CSS 选择器触发器附加到此标记(单击元素 - 匹配 CSS 选择器 - .btn .btn-primary .bnow)这将触发一个事件每次点击匹配的选择器到您的 GA 帐户。您可以在预览模式下检查触发的代码,只需查看您的 GA 事件代码的名称即可。