代码之家  ›  专栏  ›  技术社区  ›  Toon

Ajax完成后GTM触发自定义标记

  •  0
  • Toon  · 技术社区  · 7 年前

    我试图在jQuery ajaxComplete事件之后触发GTM标记。

    标签1

    应该开火 页面视图 每次打开 Ajax完成 :

    console.log('cleanup')
    

    页面视图触发器清晰简单。

    标签2

    至于ajax,我正在设置额外的标记来检测ajaxComplete:

      var gtm = google_tag_manager[{{Container ID}}];
      $(document).ajaxComplete(function() {
        try {
          gtm.onHtmlSuccess({{HTML ID}});      
          console.log('success');
        } catch(e) {
          gtm.onHtmlFailure({{HTML ID}});
          console.log('failure')
        }
      });
    

    它在ajaxComplete上触发onHtmlSuccess()。 清除标记设置为 标签1 触发标记序列。

    此标记组合的工作方式如下:

    1. 页面加载时 标签1 开火(这个标准没问题)
    2. 在ajaxComplete上 标签2 激发HTMLSuccess()
    3. onHtmlSuccess()之后 标签1 应再次激发(由于标记顺序)

    不清楚为什么第2项和第3项没有像我预期的那样工作。 有什么建议吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Toon    7 年前

    我是这样做的:

    步骤1

    创建以下自定义HTML标记:

    <script>
      (function($) {
        $(document).ajaxStop(function() {
          dataLayer.push({
            'event': 'ajaxStop'
          });
        });
      })(jQuery);
    </script>
    

    它在jQuery ajaxStop事件的右侧向数据层事件键添加ajaxStop值。

    第2步

    下一步,添加事件名称值设置为ajaxStop的自定义事件标记: http://prntscr.com/i4swhv

    步骤3

    创建以下自定义HTML标记:

    <script>
      var gtm = google_tag_manager[{{Container ID}}];
      try {
        gtm.onHtmlSuccess({{HTML ID}});
      } catch(e) {
        gtm.onHtmlFailure({{HTML ID}});
      }
    </script>
    

    将任何其他自定义HTML标记作为清理标记添加到此标记。

    它正是我所需要的。