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&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
触发条件并且仅在按下按钮时更新)。
我错过了什么?谢谢。
更新:使用 ,我改变了我的触发器:
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 事件代码的名称即可。
第一次与 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&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
触发条件并且仅在按下按钮时更新)。
我错过了什么?谢谢。
更新:使用
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 事件代码的名称即可。