2013-05-14 31 views
1

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

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

你能解决这个问题吗?我的建议是使用“noscript”内的代码以确保它在所有情况下都能同步加载,或者只需使用带有预生成URL的

1

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

但是,关于确保没有丢失数据的担忧,我想在该文的底部强调Mickael的评论。由于在发生gtm.dom事件之前dataLayer.push可能不完整,因此您应该在dataLayer.push中包含一个自定义事件,以便您不依赖gtm.dom来激发您的标记。

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

标记名称:页面加载

标签类型:自定义HTML代码

HTML:

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

添加下列启动规则。

规则名称:所有页面

条件:{{URL}}匹配正则表达式*

然后,你要解雇的子公司标签,所有你需要做的是包括这个自定义事件(即pageLoaded)作为触发规则的条件。在这个例子中,条件是:{{event}}等于pageLoaded

+0

感谢您的提示, @詹姆士。我们正计划尝试一下。仅供参考 - 在这里找到了另一个类似的答案:http://stackoverflow.com/questions/20252652/i-use-google-tag-manager-to-fire-tags-on-my-website-variables-undefined-in-cus – d3vin

+0

仅供参考,那块JavaScript实际上可能会比通常情况下更晚地触发标签。 ReadyState的原因可能是交互式的,而页面正在显示给最终用户。如果是这种情况,readyState更改可能需要几秒钟才能完成。在此之前,用户通常会点击页面。我建议使用自定义事件处理程序来处理身体负载。在body标签的末尾提起事件并且足以模拟事件。 –

相关问题