Turbolinks不会在页面上更改代码

时间:2016-07-12 11:17:39

标签: ruby-on-rails turbolinks

我正在使用Segment.io在我的网站上进行跟踪。我们有一个实时聊天小部件,我希望在每个页面上显示。但是我无法弄清楚如何使这项工作。

我创建了一个analytics.js加载到正文中(我也尝试将analytics.page();添加到正文中而没有任何结果):

  window.analytics = window.analytics || [];

  window.analytics.methods = ['identify', 'group', 'track',
    'page', 'pageview', 'alias', 'ready', 'on', 'once', 'off',
    'trackLink', 'trackForm', 'trackClick', 'trackSubmit'];

  window.analytics.factory = function(method){
    return function(){
      var args = Array.prototype.slice.call(arguments);
      args.unshift(method);
      window.analytics.push(args);
      return window.analytics;
    };
  };

  for (var i = 0; i < window.analytics.methods.length; i++) {
    var key = window.analytics.methods[i];
    window.analytics[key] = window.analytics.factory(key);
  }

  window.analytics.load = function(key){
    if (document.getElementById('analytics-js')) return;

    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.id = 'analytics-js';
    script.async = true;
    script.src = ('https:' === document.location.protocol
      ? 'https://' : 'http://')
      + 'cdn.segment.io/analytics.js/v1/'
      + key + '/analytics.min.js';

    var first = document.getElementsByTagName('script')[0];
    first.parentNode.insertBefore(script, first);
  };

  window.analytics.SNIPPET_VERSION = '3.1.0';
  window.analytics.load('kYDWuP6nxI');
  window.analytics.page();

  document.addEventListener("turbolinks:load", function() {
    console.log('page change');
    analytics.page();
  });

当我访问应用程序上的新页面时,它会显示控制台日志,但除非我手动页面刷新,否则analytics.page();似乎不会呈现。

有人知道如何解决这个问题吗?

0 个答案:

没有答案