GTM重命名dataLayer无效

时间:2018-04-27 10:10:16

标签: google-tag-manager

我使用以下文档重命名我的dataLayer:https://developers.google.com/tag-manager/devguide#renaming

我的代码如下所示:

fsData = [{ 'pageName' : 'test' }]

<noscript><iframe src="//www.googletagmanager.com/ns.html?id=GTM-NV9MP5D" 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'?'&amp;l='+l:'';
  j.async=true;
  j.src='//www.googletagmanager.com/gtm.js?id='+i+dl;
  f.parentNode.insertBefore(j,f);
  })(window,document,'script','fsData','GTM-NV9MP5D');
</script>

然后我转到GTM并添加一个新的dataLayer变量并将其配置为包含&#34; pageInfo&#34;的值。我创建了一个简单的标签,打印出这个变量,作为触发器,我选择默认的&#34;所有页面&#34;配置为在GTM从上面的代码片段收到gtm.js事件后立即触发。

问题是我的标签永远不会触发,当我使用调试器时,我注意到我的fsData对象包含我的数据,gtm.js事件但是GTM调试器显示GTM正在推送所有它的对象和事件到&#34; dataLayer&#34;,而不是&#34; fsData&#34;。

我现在有:

window.dataLayer
0: {event: "gtm.dom", gtm.uniqueEventId: 0}
1: {event: "gtm.load", gtm.uniqueEventId: 4}

window.fsData
0: {pageInfo: test}
1: {gtm.start: 1524823378118, event: "gtm.js"}

所以我怀疑GTM仍然希望我使用名称&#34; dataLayer&#34;但我不明白为什么,因为我按照文档中的步骤进行操作。

任何人都知道我错过了什么?

谢谢

1 个答案:

答案 0 :(得分:1)

您的代码段中的编码问题,在l参数&amp;l=之前扩展&符号将导致它将重命名参数删除到正在加载的gtm脚本。这将把gtm脚本接管后的所有内容都放在默认的dataLayer中,只将已经推送的数据留在重命名的图层中的片段行中。