【问题标题】:How to update a dataLayer variable?如何更新 dataLayer 变量?
【发布时间】:2017-05-19 21:49:09
【问题描述】:

我们最初将一个包含变量的对象推送到 dataLayer:

dataLayer.push({
    'environment': {
        'userName': 'abc',
        'id': 123,
        'clicks': 0
    }
});

我们现在希望在用户每次点击时增加environment.clicks 的值。 怎么做?当我们通过

推送它时
dataLayer.push({
    'environment': {
        'clicks': 123
    }
});

dataLayer 数组可能有 10.000 个条目。如何正确更新变量?

【问题讨论】:

    标签: javascript google-analytics google-tag-manager google-datalayer


    【解决方案1】:

    更新数据层变量的方法是在“本地”GTM 事件发生时或自定义事件旁边推送变量。所以基本上你是对的。

    至于您担心 DL 可能会获得许多条目 - 在任何情况下,dataLayer 都会在每次点击时获得一个新条目(GTM 会自行添加),因此您的变量的额外条目可能并不重要。

    如果您仍然想避免这种情况,您可以更新一个全局 Javascript 变量并在 GTM 中使用它。 Google 跟踪代码管理器可以访问您页面上的所有变量(您仍然会在 dataLayer 中获得所有点击事件)。

    dataLayer 还有一个set 方法,允许您直接写入Datalayer,这显然是您要找的。您需要获取您的 GTM 实例,然后您可以设置值:

     var gtm = window.google_tag_manager[{{Container ID}}];
         gtm.dataLayer.set('balloonsPopped', undefined);
    

    详细信息例如这里是Bounteous article。您可以在自定义 HTML 标记中使用它来在点击事件触发您的标记之前更新点击计数。

    dataLayer 也会在页面加载时重置。每次浏览量要收集 10 000 次点击,这将需要一个单页应用程序。

    这被标记为谷歌分析。如果您计划在 GA 中跟踪点击,请记住 GA 会话在 500 次点击后过期,因此结果可能不是您所期望的(而且免费版本每月只有 1000 万次点击,点击跟踪将很快耗尽这一点)。如果你想跟踪 GA 中的点击次数,那么你需要一个事件或其他东西来跟踪点击,所以事件的数量基本上就是你正在寻找的指标,或者你可以创建一个自定义指标并将其设置为GA 调用中的“1”(意味着每次调用都会加一)。

    【讨论】:

      【解决方案2】:

      引用documentation:

      需要注意的是,将与现有变量同名的变量推送到数据层会导致现有值被新值覆盖

      只需推送具有相同变量名和更新值的条目即可。

      【讨论】:

      • 这是真正的答案,虽然学习“set”方法也很好:)
      • 加一个用于引用 TFM。
      【解决方案3】:

      你不能使用支架吗?比如:

      var click_value_holder = dataLayer.environment.clicks;
      dataLayer.push({
        'environment': {
          'clicks': (click_value_holder + 1)
        }
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-11
        • 2017-01-31
        相关资源
        最近更新 更多