如何触发事件以将 google tagmanager 与 Turbolinks 结合使用

use*_*603 5 javascript ruby-on-rails turbolinks google-tag-manager

我正在尝试使用 Rails 应用程序实现 google tagmanager,但由于 Turbolinks,我无法触发其标签。

我看到了这个答案:Firing Tags in GTM (Google Tag Manager)container under Turbolinks 和这个:Googletagmanager with Turbolinks 这告诉我,我需要在页面上触发一个事件:加载,但我似乎无法触发该事件。我试过把

$( window ).on( 'page:load', function () {
  dataLayer.push({'event': 'event_name'});
} );
Run Code Online (Sandbox Code Playgroud)

在 application.js 文件中,以及将其放入视图中,我还尝试通过 Coffeescript 在 CoffeeScript 分析文件中使用以下变体:

ready = ->
    dataLayer.push({'event': 'event_name'});
$(document).ready(ready)
$(document).on('page:load', ready)
Run Code Online (Sandbox Code Playgroud)

但当我由于涡轮链接而移动到另一个页面时,我仍然无法让谷歌标签管理器触发其标签。

任何帮助将非常感激。

Thi*_*tha 1

您可以使用虚拟页面视图来跟踪涡轮链接页面加载。在 head 关闭标记之前添加以下脚本。修改了默认的 GTM 脚本,使其可以与 Turbo 链接一起使用。

<!-- Google Tag Manager trigger for Turbolinks -->
 <script type="text/javascript">
 $(document).on('page:change', function(){
   var url = window.location.href;
   var data = {
    'event':'pageView',
    'virtualUrl': url
   };
   if(window['referer'] !== undefined){
      data['pageReferrer'] = window['referer'];
   }else{
      data['pageReferrer'] = document.referrer;
   }
   dataLayer.push(data);
   window['referer'] = window.location.href;
 });
 </script>
 <!-- End Google Tag Manager trigger for Turbolinks -->
Run Code Online (Sandbox Code Playgroud)