我想在我的Rails 4 + Turbolinks应用程序中集成hubspot聊天界面。我已将Google跟踪代码管理器配置为在每个页面加载事件中都显示支持聊天界面,但工作正常。

GTM标签(自定义html)

<!-- Start of HubSpot Embed Code -->
<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/xxxxxx.js"></script>
<!-- End of HubSpot Embed Code -->

问题
  • 当我手动刷新页面(全页面刷新)时,会显示hubspot客户端界面(聊天气泡窗口)。
  • 当我访问带有Turbolinks的页面时,它没有显示。

  • 为了调试,我遵循了

    how-do-i-know-if-my-hubspot-tracking-code-is-working

    我可以通过检查元素或将其 checkin 浏览器的 View 页面源中来看到将此标签添加到文档主体(DOM)中。 “网络”选项卡还显示对js.hs-script.com进行的网络调用。

    EXPECTED
  • hubspot聊天界面可与Turbolinks页面访问一起使用:

  • ruby-on-rails - Turbolinks访问的页面中缺少hubspot聊天界面,但可以刷新整个页面-LMLPHP

    最佳答案

    我也遇到了这个问题,并通过在(重新)包括Hubspot脚本加载器之前从 header 中删除了任何现有的Hubspot脚本来解决此问题。我只是在添加Hubspot加载程序之前直接在 View 中添加了以下脚本:

    <script>
      // Remove Hubspot <head> scripts after a Turbolinks page load
      // so it can re-initialize properly.  Paste this code immediately
      // before the hubspot loading script in the <body>
      (function() {
        var scripts, script;
    
        // Remove scripts added by hs-scriptloader
        scripts = document.querySelectorAll('script[data-loader="hs-scriptloader"]');
        for (var script of scripts) {
          script.remove();
        }
    
        // Remove Hubspot Analytics
        script = document.getElementById('hs-analytics');
        if (script != undefined) {
          script.remove();
        }
    
        // Avoid duplicate chat warning and allow chat to load
        window.hubspot_live_messages_running = undefined
      })()
    </script>
    
    <!-- Now add the script to load Hubspot-->
    <script async="" defer="defer" id="hs-script-loader" src="//js.hs-scripts.com/xxxxxxx.js" type="text/javascript"></script>


    这仍然是一个脆弱的解决方案,因为Hubspot可以随时更改选择器(数据加载器等)。

    关于ruby-on-rails - Turbolinks访问的页面中缺少hubspot聊天界面,但可以刷新整个页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51203380/

    10-09 12:58