当用户按下网络中的按钮时,我必须发送谷歌标签管理器事件。事实上,这个按钮位于一个 iframe 内,点击后,这个 iframe 被关闭,另一个 iframe 出现......
我在 JavaScript 的点击事件上设置此事件数据,然后调用 dataLayer.push 将该信息发送到谷歌分析。
我可以看到来自 firebug 的此请求,但一旦 iframe 关闭,它就会在到达 google 之前被取消...
有什么方法可以在关闭 iframe 之前等待此调用吗?还有其他方法可以“推送”这些数据吗?
提前致谢。
为了使这个问题对当前读者更有用:现在,您可以在 Google 跟踪代码管理器中创建一个事件侦听器标记,并选中“等待依赖于此事件的标记”复选框(当这是时,GTM 中不存在事件侦听器标记)问)。
(当然,技术背景与问题中所述的有点不同 - 一方面 datalayer.push 不会将数据发送到 Google Analytics)。
在这里找到 http://www.simoahava.com/gtm-tips/hitcallback-eventcallback/ 事件“eventCallback”。我还没有测试它,但希望它能起作用,并且正如我所看到的 gtm.js 包含此事件。
您可以查看此完整教程有关 Cookie 横幅 + 同意模式的内容。唯一的区别是他们使用第三方 cookie 横幅
我也有类似的情况。我有 2 个容器,但更糟糕的是我收到 4 个回调!!
虽然我没有找到任何关于以下内容的正式信息,但我猜测回调可能会收到一些参数,所以我添加了一个,看看Google是否好心给我们发回一些信息,是的!我探索了它。
回调中接收到的参数是一个字符串,代表跟踪器的ID(我得到了几个
GTM-xxx
代码,加上几个G-xxx
代码):
这是我从 Javascript 推送的数据:
function sendDataToTrackers()
{
const selectedOffer = getOfferStoredInTheButton();
const formData = getStructuredFormData( true );
const event = {
"event": "htr-form-submitted",
"form": "otoño-2023-desde-aeropuerto",
"data": {
"selectedOffer" : selectedOffer,
"formData": formData
},
'eventCallback' : function( tracker ) {
console.log( 'All events for tracker ' + tracker + ' fired.' );
}
}
dataLayer.push( event );
}
这就是我得到的:
G-xxx
是GTM注入的GA4代码。
似乎 eventCallback 不是在 GTM 容器的末尾调用,而是在我们无法控制的某些注入代码的末尾调用,所以我不太清楚如何控制传入的 GA4 回调。
GTM 的魔力在于将代码与注入的内容解耦。
但是,尽管如此,当我们“至少”控制 GTM 时,我们可以跟踪这些回调,检查它们是否
GTM-xxx
,然后进行计数(或在地图、列表等中进行管理。)
全球范围内也有这样的事情:
let pendingCallbacks = [
'GTM-1111',
'GTM-2222'
];
然后在回调中开始删除收到的回调,当数组为空时,我们知道所有 GTM 都已给我们回电。
(无论这是否有用,只要有意外的回调呼叫我们,就会产生一个附带问题)。