如何捕获事件标签的按钮单击附近的文本
How to capture the text near a button click for the event label
我正在使用跟踪代码管理器跟踪一些资产下载。页面上有多个可下载资源,每个资源都有一个 'Download asset' 按钮。
我想在标签管理器中创建一个标签来涵盖所有这些下载,使用事件标签指定资产类型:例如 'full-bleed image'、'facebook ad image' 等
通常,我会为此使用 'click text' 或 'click URL' 变量,但这次我不能。所有下载按钮都具有相同的文本(显然,这无法更改)并且 URL 仅包含 CMS 生成的资产编号,而不是描述性的 URL.
但是,每个按钮上方都有一个包含资产名称的 h4:
有没有什么方法可以在标签管理器中创建一个变量,在单击按钮时抓取按钮上方 h4 的内容?
我为 h4 创建了一个变量,但它只捕获页面上第一个 h4 的内容(而不是离按钮点击最近的那个)。
<div class="content">
<h4>Full Bleed</h4>
<div class="copy">
<p>Perfect for social media.</p>
</div>
<div class="btn-container">
<a href="URL?assetNo=17232568" class="btn" >Download assets
</a>
</div>
</div>
是的,有办法做到这一点。它需要一些 抓取 .
您可以创建一个新的自定义 JavaScript 变量并使用内置变量 {{Click Element}} - 然后获取它的 parent node,例如:
{{点击元素}}.parentNode
这应该 return 整个 <div class="content">
元素。然后只需在该元素内搜索 <h4>
,如下所示:
{{单击元素}}。parentNode.getElementsByTagName("h4")[0]
- 这是您的“全出血”元素。请记住,这 return 是一个数组,因此 [0].
需要注意的一点是,当您单击您的元素时:
<div class="btn-container">
<a href="URL?assetNo=17232568" class="btn" >Download assets
</a>
</div>
根据您点击的确切位置,{{Click Element}} 有时会出现 <div>
元素,有时会 <a>
在其中。这有时会破坏“.parentNode”功能,因此您需要进行一些检查。下面我写了一些伪代码(未经测试,乱七八糟):
自定义JavaScript变量:
function(){
var parent = {{Click Element}}.parentNode;
var value = "";
if(parent.className === "content"){
value = parent.getElementsByTagName("h4")[0]
}else{
value = parent.parentNode.getElementsByTagName("h4")[0]; // you need to go one level above
}
return value.innerText;
}
我正在使用跟踪代码管理器跟踪一些资产下载。页面上有多个可下载资源,每个资源都有一个 'Download asset' 按钮。
我想在标签管理器中创建一个标签来涵盖所有这些下载,使用事件标签指定资产类型:例如 'full-bleed image'、'facebook ad image' 等
通常,我会为此使用 'click text' 或 'click URL' 变量,但这次我不能。所有下载按钮都具有相同的文本(显然,这无法更改)并且 URL 仅包含 CMS 生成的资产编号,而不是描述性的 URL.
但是,每个按钮上方都有一个包含资产名称的 h4:
有没有什么方法可以在标签管理器中创建一个变量,在单击按钮时抓取按钮上方 h4 的内容?
我为 h4 创建了一个变量,但它只捕获页面上第一个 h4 的内容(而不是离按钮点击最近的那个)。
<div class="content">
<h4>Full Bleed</h4>
<div class="copy">
<p>Perfect for social media.</p>
</div>
<div class="btn-container">
<a href="URL?assetNo=17232568" class="btn" >Download assets
</a>
</div>
</div>
是的,有办法做到这一点。它需要一些 抓取 .
您可以创建一个新的自定义 JavaScript 变量并使用内置变量 {{Click Element}} - 然后获取它的 parent node,例如:
{{点击元素}}.parentNode
这应该 return 整个 <div class="content">
元素。然后只需在该元素内搜索 <h4>
,如下所示:
{{单击元素}}。parentNode.getElementsByTagName("h4")[0]
- 这是您的“全出血”元素。请记住,这 return 是一个数组,因此 [0].
需要注意的一点是,当您单击您的元素时:
<div class="btn-container">
<a href="URL?assetNo=17232568" class="btn" >Download assets
</a>
</div>
根据您点击的确切位置,{{Click Element}} 有时会出现 <div>
元素,有时会 <a>
在其中。这有时会破坏“.parentNode”功能,因此您需要进行一些检查。下面我写了一些伪代码(未经测试,乱七八糟):
自定义JavaScript变量:
function(){
var parent = {{Click Element}}.parentNode;
var value = "";
if(parent.className === "content"){
value = parent.getElementsByTagName("h4")[0]
}else{
value = parent.parentNode.getElementsByTagName("h4")[0]; // you need to go one level above
}
return value.innerText;
}