无法通过 Turbolinks 有效使用 Google 标签管理器

Unable to effectively use Google Tag Manager with Turbolinks

我将 Google 跟踪代码管理器与带有 turbolinks 的 Rails 4.2 应用程序一起使用。我完全被难住了,完全无法通过 turbolinks 有效地使用 Google 标签管理器。

Google 标签管理器似乎反复感知新的页面加载(<body> 标签被替换)作为 google 标签管理器的新安装。当我查看我的 Google 标签助手记录时,我只看到 Google 标签管理器的无尽绿色标签海洋。

有人提供任何资源线索,我可以从中找出如何有效使用它的方法吗?

我看过 Googletagmanager with Turbolinks,它似乎有点过时,但也没有解决我的错误安装问题。

替换标签可能会产生各种副作用(正如您现在意识到的,其中之一是代码被重新初始化并触发 gtm.js 事件),所以我建议您放弃 noscript 部分并移动剩下的到头部 - 我真的不知道 turbolinks(或 RoR),但根据 this article turbolinks 不会重新加载头部。

不幸的是,SPA 中仍然可能存在副作用,因为所有推送到 dataLayer 的项目都将保留在那里。您可能需要考虑在加载新内容时重置数据层:

window.google_tag_manager[{{Container ID}}].dataLayer.reset();

其中 {{Container ID}}(显然)是您容器的 GTM-XXX ID。不要只是用未初始化的数组 (dataLayer = []) 覆盖 dataLayer 变量,因为 GTM 向 dataLayer 变量添加了一些方法,如果覆盖它将会丢失,并且您的 GTM 实例将停止工作。