3

我搜索了 Google 跟踪代码管理器 (GTM) 文档,但没有找到解决此问题的任何内容。我正在与一个联盟网络合作,他们希望同步加载他们的跟踪像素,以确保它在页面内容加载之前触发。这仅适用于我们的订单确认页面。我们实施了 GTM,因此我们可以在 5 分钟内启动和修复代码,而不是 2 周。

GTM 安装在我们的订单确认页面顶部并异步加载标签,因此我知道附属网络的标签加载速度非常快,但网络仍然担心某些数据可能会丢失。GTM 没有任何选项或文档表明可以同步加载脚本,但我注意到他们代码中的 j.async=true 名称-值对。

如果我将那部分代码更改为 j.async=false,代码会同步加载还是会中断它?

这是完整的代码供参考。

<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-XXXX"
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','myNewName','GTM-XXXX');</script>
<!-- End Google Tag Manager -->
4

2 回答 2

1

关于Cardinal Path的文章非常适合学习如何设置同步标签。

但是,关于确保不丢失数据的问题,我想强调 Mickael 在文章底部的评论。由于在 gtm.dom 事件发生之前 dataLayer.push 可能不完整,因此您应该在 dataLayer.push 中包含一个自定义事件,这样您就不会依赖 gtm.dom 来触发您的代码。

这是一个示例标记,其中包含特定于页面加载的自定义事件。

标签名称:pageLoad

标签类型:自定义 HTML 标签

HTML:

<script type="text/javascript">
var tid = setInterval( function () {
    if ( document.readyState !== 'complete' ) return;
    clearInterval( tid );       
    dataLayer.push({ "event": "pageLoaded" });
}, 100 );
</script>

添加以下触发规则。

规则名称:所有页面

条件:{{url}} 匹配 RegEx .*

然后,在您想要触发的附属标签上,您所要做的就是将此自定义事件(即 pageLoaded)作为触发规则的条件。在本例中,条件为:{{event}} 等于 pageLoaded

于 2014-02-05T12:07:14.597 回答
0

关于定义页面类型,然后根据该输入操作规则/宏,我们有类似的要求。

我发现的建议是在 GTM 中有一个规则来确定页面加载/规则加载等。

我在这篇文章中找到了它,http://www.cardinalpath.com/controlling-tag-firing-order-with-google-tag-manager/

希望这将有助于解决它 - 理论上你应该能够在页面加载之前触发 GTM 代码。

于 2013-08-06T10:11:51.520 回答