【发布时间】:2015-01-14 08:02:31
【问题描述】:
我正在尝试使用 Rails 应用程序实现 google tagmanager,但由于 turbolinks 无法触发其标签。
我已经看到了这个答案:Firing tags in GTM (Google Tag Manager) containers under turbolinks 这个:Googletagmanager with Turbolinks 这告诉我我需要在 page:load 上触发一个事件,但我似乎无法触发该事件。 我试过放
$( window ).on( 'page:load', function () {
dataLayer.push({'event': 'event_name'});
} );
在 application.js 文件中,以及将其放入视图中,并且我还尝试了通过咖啡脚本在咖啡脚本分析文件中使用它的变体:
ready = ->
dataLayer.push({'event': 'event_name'});
$(document).ready(ready)
$(document).on('page:load', ready)
但由于 turbolinks,当我移动到另一个页面时,我仍然无法让 google tagmanager 触发其标签。
任何帮助将不胜感激。
【问题讨论】:
-
此代码仅将事件放入dataLayer。您在 GTM 中设置了哪些规则和标签来处理此事件?
-
我有一个 CrazyEgg 的标签,并包含作为触发规则的“GTM 事件”,它的规则是 {{event}} 包含“event_name” - 这就是你的意思吗?
-
是的,这就是我的意思。当您移动到另一个页面时,打开浏览器的 JavaScript 控制台并输入“dataLayer”以显示 dataLayer 对象的内容。您将看到几个子对象。如果打开第四个对象,事件类型是什么?您是否看到任何其他子对象?他们的事件类型是什么?
-
有八个对象:第四个对象说:事件:“gtm.dom”。我实际使用的“event_name”是单词“contratado”(在代码和 GTM 中)。还有其他几个对象,其中第 2、第 3 和第 7 个对象都有事件:“contratado”。对象 5 具有“事件:gym.load”,对象 6 具有“事件:gtm.js”,对象 8 和 9 具有事件:“event_name”。此外,在加载控制台打印之前: Uncaught TypeError: Cannot read property 'replace' of undefined 。感谢您的帮助
-
对不起-我上面的评论不正确-我的意思是:有八个对象:第四个对象说:事件:“gtm.dom”。我实际使用的“event_name”是单词“contratado”(在代码和 GTM 中)。还有其他几个对象,其中第 2、第 3、第 6、第 7 和第 8 个对象都有事件:“contratado”。在其下方都有 proto。此外,在加载控制台打印之前: Uncaught TypeError: Cannot read property 'replace' of undefined 。感谢您的帮助
标签: javascript ruby-on-rails google-tag-manager turbolinks