谷歌标签管理器点击事件没有冒泡到家长
Google Tag Manager click event not bubbling up to parent
我正在一个客户的网站上设置谷歌标签管理器,我在启动点击事件标签时遇到了问题。
我已经将触发器设置为在按钮的CSS选择器上启动。
按钮本身有一些子元素,包括svg图标。单击svg时,单击会在数据层中注册,但不会触发标记。只有当我选择按钮本身时,标记才会触发。
我还尝试在我自己的脚本中删除附加到这些按钮的事件侦听器,以防return false;
或e.stopPropagation()
阻止它,但这并没有改变任何事情。
我知道GTM会监听弹出到文档中的点击事件。如果是这种情况,我的标签应该在点击孩子时触发,对吧?还是我误解了什么?
或者,我应该在脚本中将事件推送到dataLayer,而不是使用点击触发器吗?
屏幕截图
10 gtm.click
正确发射了标签
9 gtm.click
是没有的子svg
最后一张截图是我的触发器的触发规则。
我经常遇到这种类型的问题。类似于字形图标的<i>
标签也会发生这种情况。只需将CSS pointer-events:none;
添加到该SVG中(除非您要求SVG是可点击的,而不仅仅是parentElement)。SVG上的pointer-events:none
意味着单击时,单击事件会在父元素上注册。
最好的方法是让客户端开发人员添加JS。更巧妙的方法是通过GTM 在自定义HTML标签中运行这样的东西
jQuery('a.link-youre-tracking svg').css('pointer-events','none)
要使用的Grate解决方案/想法:
pointer-events:none
但是,当您有复杂的div(里面有20个类和15个元素),并用链接<a>
标记(例如博客明信片)包装这个div时,会发生什么呢。
对于这个问题,GTM目前缺乏一个正常的解决方案:(对于复杂的结构,您应该为pointer-events
添加"extradiv"(工作良好,但"不优雅")。
<a class="track-this-click-by-gtm" href="url">
<div style="pointer-events:none">
extra unwanted div
<i></i>
<p>hello</p>
<ul><li>hello2</li></ul>
<date>2019</date>
lorem
</div>
</a>
如前所述,"Just Links"触发器将冒泡到父<a>
,因此使用它而不是"All Elements"应该可以解决您在<a>
的子级上注册点击时遇到的任何问题。但是,例如,如果您试图在父<button>
上注册点击,该怎么办?然后,您可以使用一个名为"查找最近的"的自定义JavaScript变量,并使用以下函数:
function () {
return function (target, selector) {
while (!target.matches(selector) && !target.matches('body')) {
target = target.parentElement;
}
return target.matches(selector) ? target : undefined;
}
}
然后在另一个自定义JavaScript变量中使用该函数,如下所示:
var elementFound = {{Find closest}}({{Click Element}}, 'button');
阅读Simo Ahava的文章了解更多信息。
- 根据单个用户的决定禁用谷歌标签管理器(选择退出)
- jquery在通过谷歌标签管理器交付时点击不工作
- 删除$fromtataLayertotal-google标签管理器
- 谷歌标签管理器点击事件没有冒泡到家长
- 谷歌标签管理器,事件推送到数据层
- 从谷歌标签管理器提取标签
- 我使用谷歌标签管理器在我的网站上启动标签.变量“;未定义的“;在任何版本的Internet Explorer的自定义代码
- 如果JavaScript标签是通过谷歌标签管理器插入到页面上的,那么它们的延迟程度是多少;s的自定义HTML
- 如何在谷歌跟踪代码管理器 noscript 标签中参数化容器 id
- 检查值存在于标签管理器验证器方法内的数组中
- '无法字符串化dataLayer'当使用谷歌标签管理器'点击监听器'在angular j
- 谷歌标签管理器添加&instrad of just&转换为脚本src
- 表单放弃数据谷歌标签管理器
- 使用谷歌标签管理器跟踪事件
- Youtube iFrame嵌入式视频跟踪-谷歌标签管理器
- 正在分析电子商务数据以推送到谷歌标签管理器的数据层
- 不同域上IFrame中的谷歌标签管理器
- Facebook转换像素和谷歌标签管理器
- ng if和谷歌标签管理器脚本
- 转到谷歌标签管理器破坏了我们的虚拟页面浏览量