首次使用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&bfpid=8072faaa-c89f-4a63-be19-e54a91f0f1a0&bfrtid=3d6e96c3-e557-4f85-97d1-c750787dc6d8&arr=2019-03-07&nts=3&a=1&c=0');WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$plcBody$BookingFormGrid$ctl16", "", true, "", "", 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
但是仍然可以通过单击页面上的任意位置来更新变量。
答案 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}}的值:
从这里您可以:
完成此操作后,您可以将CSS选择器触发器附加到此标签(点击元素-匹配CSS选择器-.btn .btn-primary .bnow),然后,每当将匹配的选择器单击到您的GA时,就会触发一个事件帐户。您可以在预览模式下检查代码触发,只需注意GA事件代码的名称即可。