5

试图在移动站点即SPA中实现内容分组。

场景是这样的:当我第一次访问 PDP 页面时,设置了类别变量,并将其发送到 Universal Analytics Tag 中的内容组。如果在此之后我返回主页,类别变量不会更新,并且主页也被分组在上一个 PDP 页面的同一内容组下。

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

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

谢谢

4

3 回答 3

4

现在有一个记录的方法来重置数据层。请参阅数据层文档中的重置

如果您将一个函数推送到dataLayer,它将使您能够访问具有getsetreset语义的对象。特别是对于这个问题,reset是相关的位。

于 2020-07-06T22:54:58.903 回答
3

有一种未记录的方法可以使用此方法清理整个 dataLayer:

var gtm = window.google_tag_manager['GTM-XXXXXX'];
gtm.dataLayer.reset();

现在您不一定需要这样做,因为您可以undefined在 dataLayer 中设置不再需要的值:

dataLayer.push({
  'please_go_away': undefined
});
于 2017-05-11T15:30:27.030 回答
1

如果这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();
      }
    }
  }
}
于 2018-06-28T06:57:44.137 回答