Google标签管理器-自定义Javascript变量返回未定义,停止触发器

8xiog9wr  于 2023-04-10  发布在  Java
关注(0)|答案(1)|浏览(134)

我是GTM的新手,试图创建一个自定义的JavaScript变量来返回一个动作/事件是否在网站的页脚或主体中。我想用它来区分GTM中的触发器,如链接点击/表单提交等。
自定义javascript变量代码:

function() {
 var e = {{Form Element}};
 return e[0].indexOf("#footer");
}

在表单提交时,在数据层中显示为undefined:

但如果我把.indexOf("#footer")拿掉

function() {
 var e = {{Form Element}};
 return e[0];
}

它在数据层中显示为:

所以我不知道为什么.indexOf()不工作,但如果我尝试在GTM中将触发器更改为我们的contains "#footer"逻辑,则不匹配。
我可能做错了很多事情,但我甚至不知道足够的GTM知道该问什么问题。
请帮帮我

7rtdyuoh

7rtdyuoh1#

e[0]不是一个字符串,而是一个HTMLInputElement。转换为字符串只由UI完成,而且,据我所知,不是标准的。
如果你想检查一个元素是否包含在另一个元素的子树中,使用.contains()

function() {
 var e = {{Form Element}};
 return document.getElementById('footer').contains(e);
}

您可能需要将'footer'替换为'footer-router'或类似的东西,因为在元素的路径中实际上看不到#footer本身。
我还将e[0]更改为e,因为表单的第一个输入元素和表单本身将位于同一个子树中,即使表单本身的ID为footer

相关问题