javascript - Datalayer上的查询以及如何在CustomHTML中运行

标签 javascript google-analytics google-tag-manager data-layer

我有下面的 JavaScript 代码,我从 HTML 元素中提取目标 URL 和 Alt 属性,并尝试将值推送到数据层中。

我已经使用控制台测试了代码,它正在提取所需的值。我主要关心的是我们如何将值推送到数据层中。我是否需要修改代码才能通过 GTM 在 customHTML 中运行?

var divHead= document.getElementsByClassName('card__media-overlapping__media');
var eventhandlerdoc = function(event){
    var imgURL=event.currentTarget.firstElementChild;
    var imgALT=event.currentTarget.firstElementChild.firstElementChild.getAttribute('alt');

dataLayer = [];
     dataLayer.push({
            'expImgurl': imgURL,
            'expImgalt': imgALT

}

for(var index=0; index < divHead.length; index++){

divHead[index].addEventListener('click',eventhandlerdoc,true);}

最佳答案

如果在 GTM 代码段之后执行,您的代码将破坏 GTM(因为 GTM 使用自定义代码修改了 dataLayer 的推送方法并添加了多个事件)。因此,您需要确保在代码片段之前执行此操作,或者检查 dataLayer 是否已初始化并重用它:

window.dataLayer = window.dataLayer || [];

此外,这些变量仅在下一个事件推送到数据层后才可用,因此您需要推送自定义事件或等到下一个 (GTM) 事件后再使用它们。

由于 GTM 有自己的点击处理程序,我建议您使用它并移动 JavaScript 代码来检索自定义 JavaScript 变量的属性。

关于javascript - Datalayer上的查询以及如何在CustomHTML中运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45346387/

相关文章:

javascript - vuejs - .bind(this) 没有按预期工作

javascript - Hillsong 网站 - 滚动时从一张背景图片平滑过渡到下一张背景图片

google-analytics - 谷歌分析和 Oauth(Facebook 登录)

javascript - 阻止 Google 跟踪代码管理器读取输入元素

javascript - GTM 内容事件

javascript - Navigator angular 13 类型上不存在 msSaveOrOpenBlob 属性

javascript - 使用javascript加载多个图像

google-analytics - Google Analytics(分析):特定的跨子域跟踪

google-analytics - Google Analytics Embed API - 设置语言

javascript - GTM Google Analytics 自定义维度变量仅在某些时候触发