我试图了解为什么 Google 跟踪代码管理器中的自定义 JavaScript 经常意外触发。最终,正如预期的那样,标签只触发一次,所以这不是问题,我只是想了解它,以及是否有更有效的方法可以做到这一点。
我从 Google 跟踪代码管理器上的一个空白容器开始。
我创建了 3 个简单的自定义 JavaScript 变量:
测试 - 类别
function()
{
console.log(JSON.parse(JSON.stringify(window.dataLayer)));
console.log("Category fired");
return "Category";
}
测试 - 操作
function()
{
console.log(JSON.parse(JSON.stringify(window.dataLayer)));
console.log("Action fired");
return "Action";
}
测试 - 标签
function()
{
console.log(JSON.parse(JSON.stringify(window.dataLayer)));
console.log("Label fired");
return "Label";
}
我在 GTM 中创建了 GA 事件代码:
- 标记类型:Google Analytics(分析):Universal Analytics
- 轨道类型:事件
- 类别:{{测试 - 类别}}
- 操作:{{测试 - 操作}}
- 标签:{{测试 - 标签}}
触发器是“所有点击”。
我将跟踪代码管理器置于预览模式并进行了测试。
页面加载后,在我进行任何点击之前,控制台会记录:
[{}] Array (length: 1)
Category fired
Action fired
[{}] Array (length: 1)
Category fired
Action fired
Label fired
[{}] Array (length: 2)
Category fired
Action fired
[{}] Array (length: 2)
Category fired
Action fired
Label fired
[{}] Array (length: 3)
Category fired
Action fired
[{}] Array (length: 3)
Category fired
Action fired
Label fired
当我单击一下时,控制台日志:
[{}] Array (length: 4)
Category fired
Action fired
[{}] Array (length: 4)
Category fired
Action fired
[{}] Array (length: 4)
Category fired
Action fired
Label fired
在页面加载时,前两个变量(类别和操作)每次推送到数据层时都会触发两次,而第三个变量(标签)只会触发一次。
点击(一次推送到数据层)时,前 2 个变量(类别和操作)触发 3 次,第三个变量(标签)仅触发一次。
任何人都可以解释为什么每次推送到数据层时都会多次评估前 2 个变量吗?
最佳答案
当您处于预览/ Debug模式时,每个变量都会根据推送到数据层的每个事件进行评估。
关于javascript - 为什么 Google 跟踪代码管理器中的自定义 JavaScript 变量会运行多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59141667/