在单页面应用程序中重置数据层变量(Google代码管理器)

时间:2017-04-28 06:29:29

标签: single-page-application google-datalayer

尝试在SPA中实现移动网站的内容分组。

场景如下:当我第一次访问PDP页面时,会设置类别变量,并将其发送到Universal Analytics标记中的内容组。 如果在此之后我返回主页,则类别变量不会更新,并且主页也会分组在先前PDP页面的相同内容组下。

此变量仅在我访问另一个PDP页面时更新。

我正在使用自定义事件PageLoad来模仿pageView事件。只是希望数据层变量在连续的PageLoad事件中刷新。

由于

3 个答案:

答案 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,它将使您可以使用getsetreset语义访问对象。特别是对于这个问题,reset是相关位。