尝试在SPA中实现移动网站的内容分组。
场景如下:当我第一次访问PDP页面时,会设置类别变量,并将其发送到Universal Analytics标记中的内容组。 如果在此之后我返回主页,则类别变量不会更新,并且主页也会分组在先前PDP页面的相同内容组下。
此变量仅在我访问另一个PDP页面时更新。
我正在使用自定义事件PageLoad来模仿pageView事件。只是希望数据层变量在连续的PageLoad事件中刷新。
由于
答案 0 :(得分:3)
使用此方法清除整个dataLayer的方法是无记录的:
var gtm = window.google_tag_manager['GTM-XXXXXX'];
gtm.dataLayer.reset();
现在您不一定需要这样做,因为您可以在dataLayer中将您不想要的值设置为undefined
:
dataLayer.push({
'please_go_away': undefined
});
答案 1 :(得分:0)
如果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();
}
}
}
}
答案 2 :(得分:0)
现在有一种记录的方法可以重置数据层。请参阅数据层文档中的Reset。
如果将函数推送到dataLayer
,它将使您可以使用get
,set
和reset
语义访问对象。特别是对于这个问题,reset
是相关位。