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

时间:2019-03-07 04:25:26

标签: javascript google-tag-manager

首次使用Google Tag Manager。我有一个基于按钮类的点击事件触发器,但是每次单击都会执行。

我的变量{{bookingUnit}}是从页面HTML上删除的文本获取其值的。这是一个自定义Javascript变量(并返回正确的值):

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

我必须检测在(第三方系统的)页面上定义为的按钮单击:

<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触发条件,仅在按下按钮时才更新)。

我想念什么?谢谢。

更新:使用info from this forum,我更改了触发器,如下所示:

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

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

4 个答案:

答案 0 :(得分:1)

听起来您的容器中有一个Click - All Elements触发器处于活动状态。每次单击鼠标都会触发。每次触发触发器时,所有变量都将在那时重新评估。因此,最好的方法是停用Click - All Elements触发器(如果您不使用它的话)。

编辑:

  • 转到变量>配置内置变量
  • 选择以下内容: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

答案 1 :(得分:0)

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

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

但是,仅当事件目标与触发器中的条件匹配时,才会触发与触发器关联的操作。因此,这实际上应该不会给您造成问题。

答案 2 :(得分:0)

这样做:

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

点击类别-等于-btn

只使用一种分类和一种条件。还要确保它是该类的唯一按钮,或者只有要跟踪的按钮才具有该类。

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

答案 3 :(得分:0)

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

在这种情况下,听起来好像您想在每次触发触发器时向GA发送一个事件以及{{bookingUnit}}的值:

  • 创建一个Google Analytics(分析)标签-将其设置为“事件”。

从这里您可以:

  • 将变量与其他任何详细信息一起放置为事件操作 您想发送。
  • 确保已为您的Google Analytics(分析)ID创建了一个变量,以 将该活动链接到您的Google Analytics(分析)帐户。

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