【问题标题】:GTM data layer eventCallback functionGTM 数据层事件回调函数
【发布时间】:2014-11-07 13:39:17
【问题描述】:

所以我在 GTM 数据层设置了电子商务代码,但在发送到 Analytics 之后,我希望页面被重定向,所以我知道我应该使用 eventCallback,但由于某种原因它不起作用。

<body>
<script>
    dataLayer = [{
        'transactionId': '56833',
        'transactionAffiliation': 'TestName',
        'transactionTotal': 1540.00,
        'transactionTax': 385,
        'transactionShipping': 0,
        'transactionProducts': [{
            'sku': 'FFSS44HH',
            'name': 'test',
            'category': 'TestCategory',
            'price': 1540.00,
            'quantity': 2
        }],
        'eventCallback': function() {
            document.location.href='https://www.paypal.com/something';
        }
    }];
</script>
<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXX');</script>
<!-- End Google Tag Manager -->

我已经在 GTM 中为此 URL 设置了电子商务触发规则。我尝试了 hitCallback 和 eventCallback 但重定向没有发生......我在这里做错了什么?

【问题讨论】:

  • 您是否需要执行 datalayer.push 以触发 eventCallback,根据此资源:simoahava.com/gtm-tips/hitcallback-eventcallback
  • 确实有问题,因为我尝试复制粘贴一些示例,但它们仍然不起作用。我尝试了 dosument.location 和 alert,所以我只看到一条消息,但没有任何效果......你知道我在这里做错了什么吗?
  • 你没有event参数

标签: javascript google-analytics google-tag-manager universal-analytics


【解决方案1】:

取自: http://www.simoahava.com/gtm-tips/use-eventtimeout-eventcallback/

在使用eventCallback 时始终添加eventTimeout 参数。前者以一个数值作为参数,表示调用eventCallback之前要等待的毫秒数。换句话说,即使您的标签停止并且从未发出完成信号,两秒后eventCallback 也会被调用。

window.dataLayer.push({
  'event' : 'processLink',
  'eventCallback' : function() {
    window.location = targetUrl
  },
  'eventTimeout' : 2000
});

【讨论】:

  • 基本部分应该在这里
【解决方案2】:

我想我找到了解决方案,我只是在数据层的末尾添加了这个 ('event' : 'datalayerReady'):

'event' : 'datalayerReady',
'eventCallback': function() {
  document.location = "https://www.paypal.com/something";
}

【讨论】:

  • 这是正确的,因为每次推入 dataLayer 都必须定义“事件”,否则将不会被处理/触发
【解决方案3】:

这对我很有效。

<script type="text/javascript">
if (typeof dataLayer !== "undefined") {
        dataLayer.push({
            'event': 'MyEvent',
            'eventCallback' : function() {
                window.location = 'http://stackoverflow.com/questions/26802554/gtm-data-layer-eventcallback-function';
            }
        });
    }
</script>
<noscript>
    <meta http-equiv="refresh" content="0;url=http://stackoverflow.com/questions/26802554/gtm-data-layer-eventcallback-function" />
</noscript>

【讨论】:

【解决方案4】:

恐惧魔王,

尝试使用这个:(在 window.location 之后没有 href

'eventCallback': function() {
    window.location.href = 'https://www.paypal.com/something';
}

这应该可以解决它。希望这可以帮助, 彼得

【讨论】:

  • document.location 和 document.location.href 应该是一样的,不是吗?
  • 我尝试了带和不带href,但它仍然没有重定向到任何地方...你知道我还能尝试什么吗?
  • 应该是window.location.href,而不是document.location.href
  • 感谢@rolznz 的更正,相应地更新了我的答案
猜你喜欢
  • 1970-01-01
  • 2014-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-27
  • 1970-01-01
  • 1970-01-01
  • 2022-11-09
相关资源
最近更新 更多