如果您在 google tagmanager 代码段中填充了数据层,会发生什么情况?
What happens if you have the data layer being populated within the google tagmanager snippet?
客户有以下 GTM 代码段的实现。到目前为止,我只看到在加载 GTM 代码段之前使用数据层推送来填充数据层的实现。像这样实施 GTM 代码段是否有充分的理由?
<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=xxxxxxxx" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>
dataLayer = [{"automaticLogin":"true","loginSuccess":true,"pageName":"homepage","pagetype":"home","customerBaskedValue":xxxxx,"customerId":"xxxxxxx","sitePage":"d","isOptIn":true,"sessionId":"xxxxxxxxx","customerGender":"man","customerBirthDate":"1989-09-21T00:00:00","customerZip":"xxxxx","customerCity":"xxxxx","customerState":"Nederland","customerEmailID":"xxxx","orderNewCustomer":false,"customerLastMarketingChannel":null,"sessionDevice":"desktop","isFirstVisit":false}];
(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', 'dataLayer', 'GTM-xxxx');
</script>
<!-- End Google Tag Manager -->
这绝对很好,有时也值得鼓励。在容器代码执行之前将内容推送到 dataLayer 的好处是,一旦触发 gtm.js
事件,这些值将可用于 GTM。 gtm.js
事件通常用作触发器(例如,在内置的所有页面触发器中)。因此,当您希望将某些值传递给已为其分配了所有页面触发器的标签时,您必须确保在容器代码执行之前将这些值推送到数据层。
客户有以下 GTM 代码段的实现。到目前为止,我只看到在加载 GTM 代码段之前使用数据层推送来填充数据层的实现。像这样实施 GTM 代码段是否有充分的理由?
<!-- Google Tag Manager -->
<noscript><iframe src="//www.googletagmanager.com/ns.html?id=xxxxxxxx" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script>
dataLayer = [{"automaticLogin":"true","loginSuccess":true,"pageName":"homepage","pagetype":"home","customerBaskedValue":xxxxx,"customerId":"xxxxxxx","sitePage":"d","isOptIn":true,"sessionId":"xxxxxxxxx","customerGender":"man","customerBirthDate":"1989-09-21T00:00:00","customerZip":"xxxxx","customerCity":"xxxxx","customerState":"Nederland","customerEmailID":"xxxx","orderNewCustomer":false,"customerLastMarketingChannel":null,"sessionDevice":"desktop","isFirstVisit":false}];
(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', 'dataLayer', 'GTM-xxxx');
</script>
<!-- End Google Tag Manager -->
这绝对很好,有时也值得鼓励。在容器代码执行之前将内容推送到 dataLayer 的好处是,一旦触发 gtm.js
事件,这些值将可用于 GTM。 gtm.js
事件通常用作触发器(例如,在内置的所有页面触发器中)。因此,当您希望将某些值传递给已为其分配了所有页面触发器的标签时,您必须确保在容器代码执行之前将这些值推送到数据层。