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'?'&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
参数前的 & 符号:&l=
将导致它将重命名参数删除到正在加载的 gtm 脚本。这会将 gtm 脚本接管后的所有内容放在默认数据层中,只在重命名层中的代码段本身的行中保留已经推送的数据。
我正在使用以下文档重命名我的数据层: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'?'&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
参数前的 & 符号:&l=
将导致它将重命名参数删除到正在加载的 gtm 脚本。这会将 gtm 脚本接管后的所有内容放在默认数据层中,只在重命名层中的代码段本身的行中保留已经推送的数据。