GTM 重命名数据层不起作用

GTM rename dataLayer not working

我正在使用以下文档重命名我的数据层: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 变量并将其配置为包含 "pageInfo" 的值。我创建了一个简单的标签来打印出这个变量,作为触发器,我选择了默认的 "All Pages",它被配置为在 GTM 从上面的代码片段接收到 gtm.js 事件时立即触发。

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

我现在有:

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 仍然希望我使用名称 "dataLayer" 但我不明白为什么,因为我按照文档中的步骤进行操作。

有人知道我错过了什么吗?

谢谢

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