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

标签 ruby-on-rails ruby-on-rails-4 turbolinks hubspot hubspot-crm

我想在我的 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 进行的网络调用.

    预期
  • 使用 turbolinks 的 hubspot 聊天界面访问:

  • hubspot chat client interface

    最佳答案

    我也遇到了这个问题,并通过在(重新)包括 Hubspot 脚本加载器之前从标题中删除任何现有的 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/

    相关文章:

    ruby-on-rails - 我如何将 Rails 模型指向 json 文件而不是创建表

    apache - 公用文件夹中的 Rails 4 图像未在 Apache 开发中加载

    turbolinks - 使用热线广播到多个涡轮流

    javascript - jquery.turbolinks 无法处理 $(document).ready 在 Rails 中

    ruby-on-rails - 通过发送更新 ActiveRecord

    ruby-on-rails - rails 3.2 : Select option not remembered

    mysql - 事件记录搜索查询

    ruby-on-rails - 基于电话号码的移动应用程序设计身份验证

    ruby-on-rails - 在 Rails 中缓存 yaml 文件