Ajax 完成后 GTM 触发自定义代码

GTM Trigger Custom Tag after Ajax Complete

我正在尝试在 jQuery ajax完成事件后触发 GTM 代码。

标记 1

它应该在 Page View 和每次 ajaxComplete:

时触发
console.log('cleanup')

页面查看触发器清晰简单。

标记 2

至于 ajax 我正在设置额外的标签来检测 ajax完成:

  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')
    }
  });

它在 ajax 完成时触发 onHtmlSuccess()。 清除标记设置为 标记 1 以触发标记序列。

这个标签组合应该像这样工作:

  1. 在页面加载时 标记 1 触发(这部分没问题)
  2. 在 ajax完成 标记 2 时触发 onHtmlSuccess()
  3. 在 onHtmlSuccess() 之后 标签 1 应该再次触发(由于标签序列)

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

嗯,我是这样做的:

第 1 步

创建以下自定义 HTML 标签:

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

它在 jQuery ajaxStop 事件上向 dataLayer 事件键添加 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 标记作为清理标记添加到此标记。

它完全满足了我的需要。