我搜索了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 -->
答案 0 :(得分:1)
Cardinal Path上的文章非常适合学习如何设置同步标记。
然而,关于确保没有丢失数据的担忧,我想强调Mickael在该文章底部的评论。由于dataLayer.push可能在gtm.dom事件发生之前未完成,因此您应该在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
答案 1 :(得分:0)
我们对定义页面类型然后根据该输入操作规则/宏有类似的要求。
我发现的建议是在GTM中有一条规则来确定页面加载/规则加载等。
我在这篇文章http://www.cardinalpath.com/controlling-tag-firing-order-with-google-tag-manager/
中找到了它希望这有助于解决它 - 理论上你应该能够在页面加载之前触发GTM代码。