我已收到一些dataLayer定义放在网站上。其中大多数涉及点击例如在主菜单链接上。但我看到以下问题:
dataLayer.push(some data...)
我正在谷歌搜索一些解决方案,但似乎没有人有这样的问题 - 很奇怪,它看起来像一个基本的问题。也许GTA自动处理它,我不必考虑这个?
感谢您的帮助。
答案 0 :(得分:2)
GTM不会调用AJAX(除非您将Ajax调用放在自定义HTML标记中)。
Google Analytics会收集所有已配置的代码,触发器和变量,并将它们包装到一个巨大的javascript文件中。此文件将加载到您的页面中,并在您的页面上下文中进行评估。如果触发器匹配,则将相应的标签插入到页面的DOM中。到那时,GTM的标签和编码到页面源代码中的标签之间没有太大的区别。
与硬编码标签一样,当页面重新加载时,确实会发生命中。这就是为什么GTM有一个名为“事件回调”的功能,在这个功能中你可以传递一个只有在事件触发的所有标签被触发后执行的功能。从Google Analytics Enhanced E-Commerce Documentation:
中查看此示例function(productObj) {
dataLayer.push({
'event': 'productClick',
'ecommerce': {
'click': {
'actionField': {'list': 'Search Results'}, // Optional list property.
'products': [{
'name': productObj.name, // Name or ID is required.
'id': productObj.id,
'price': productObj.price,
'brand': productObj.brand,
'category': productObj.cat,
'variant': productObj.variant,
'position': productObj.position
}]
}
},
'eventCallback': function() {
document.location = productObj.url
}
});
此处事件回调是一个仅在标记全部被触发后重定向到另一个Url的函数。
可能会提到Google Analytics尝试通过sendBeacon API(如果适用)发送匹配来避免数据丢失,而不必等待服务器响应,因此即使用户导航离开页面(但是IE / Edge上没有sendBeacon)。