试图在移动站点即SPA中实现内容分组。
场景是这样的:当我第一次访问 PDP 页面时,设置了类别变量,并将其发送到 Universal Analytics Tag 中的内容组。如果在此之后我返回主页,类别变量不会更新,并且主页也被分组在上一个 PDP 页面的同一内容组下。
此变量仅在我访问另一个 PDP 页面时更新。
我正在使用自定义事件 PageLoad 来模拟 pageView 事件。只希望数据层变量在连续的 PageLoad 事件中刷新。
谢谢
试图在移动站点即SPA中实现内容分组。
场景是这样的:当我第一次访问 PDP 页面时,设置了类别变量,并将其发送到 Universal Analytics Tag 中的内容组。如果在此之后我返回主页,类别变量不会更新,并且主页也被分组在上一个 PDP 页面的同一内容组下。
此变量仅在我访问另一个 PDP 页面时更新。
我正在使用自定义事件 PageLoad 来模拟 pageView 事件。只希望数据层变量在连续的 PageLoad 事件中刷新。
谢谢
现在有一个记录的方法来重置数据层。请参阅数据层文档中的重置。
如果您将一个函数推送到dataLayer
,它将使您能够访问具有get
、set
和reset
语义的对象。特别是对于这个问题,reset
是相关的位。
有一种未记录的方法可以使用此方法清理整个 dataLayer:
var gtm = window.google_tag_manager['GTM-XXXXXX'];
gtm.dataLayer.reset();
现在您不一定需要这样做,因为您可以undefined
在 dataLayer 中设置不再需要的值:
dataLayer.push({
'please_go_away': undefined
});
如果这reset()
对您不起作用,也许您想尝试以下代码
const boomDataLayer = () => {
if (window.dataLayer !== undefined && window.google_tag_manager !== undefined) {
window.dataLayer.length = 0;
const gtmContainerReg = /GTM-/i;
for (const gtmKey of Object.keys(window.google_tag_manager)) {
if (gtmContainerReg.test(gtmKey) && window.google_tag_manager[gtmKey].dataLayer
&& window.google_tag_manager[gtmKey].dataLayer.reset
) {
window.google_tag_manager[gtmKey].dataLayer.reset();
}
}
}
}