等待使用 Google 标签管理器的 dataLayer.push()

问题描述 投票:0回答:4

当用户按下网络中的按钮时,我必须发送谷歌标签管理器事件。事实上,这个按钮位于一个 iframe 内,点击后,这个 iframe 被关闭,另一个 iframe 出现......

我在 JavaScript 的点击事件上设置此事件数据,然后调用 dataLayer.push 将该信息发送到谷歌分析。

我可以看到来自 firebug 的此请求,但一旦 iframe 关闭,它就会在到达 google 之前被取消...

有什么方法可以在关闭 iframe 之前等待此调用吗?还有其他方法可以“推送”这些数据吗?

提前致谢。

google-analytics google-tag-manager
4个回答
3
投票

为了使这个问题对当前读者更有用:现在,您可以在 Google 跟踪代码管理器中创建一个事件侦听器标记,并选中“等待依赖于此事件的标记”复选框(当这是时,GTM 中不存在事件侦听器标记)问)。

(当然,技术背景与问题中所述的有点不同 - 一方面 datalayer.push 不会将数据发送到 Google Analytics)。


3
投票

在这里找到 http://www.simoahava.com/gtm-tips/hitcallback-eventcallback/ 事件“eventCallback”。我还没有测试它,但希望它能起作用,并且正如我所看到的 gtm.js 包含此事件。


0
投票

您可以查看此完整教程有关 Cookie 横幅 + 同意模式的内容。唯一的区别是他们使用第三方 cookie 横幅


0
投票

我也有类似的情况。我有 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 都已给我们回电。

(无论这是否有用,只要有意外的回调呼叫我们,就会产生一个附带问题)。

© www.soinside.com 2019 - 2024. All rights reserved.