首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Turbolinks和漂移聊天

Turbolinks和漂移聊天
EN

Stack Overflow用户
提问于 2020-04-19 23:08:52
回答 1查看 209关注 0票数 0

我正在使用漂移聊天小部件,但它在第一个页面查看后不会重新加载。窗口小部件代码已加载,并且我在每次turbolinks重新加载时设置了一个重新加载函数

代码语言:javascript
复制
<head>
<script>

    "use strict";


      !function() {
        var t = window.driftt = window.drift = window.driftt || [];
        if (!t.init) {
          if (t.invoked) return void (window.console && console.error && console.error("Drift snippet included twice."));
          t.invoked = !0, t.methods = [ "identify", "config", "track", "reset", "debug", "show", "ping", "page", "hide", "off", "on" ],
          t.factory = function(e) {
            return function() {
              var n = Array.prototype.slice.call(arguments);
              return n.unshift(e), t.push(n), t;
            };
          }, t.methods.forEach(function(e) {
            t[e] = t.factory(e);
          }), t.load = function(t) {
            var e = 3e5, n = Math.ceil(new Date() / e) * e, o = document.createElement("script");
            o.type = "text/javascript", o.async = !0, o.crossorigin = "anonymous", o.src = "https://js.driftt.com/include/" + n + "/" + t + ".js";
            var i = document.getElementsByTagName("script")[0];
            i.parentNode.insertBefore(o, i);
          };
        }
      }();
      drift.SNIPPET_VERSION = '0.3.1';
      drift.load('XXXXXXXXXXX');
      drift.config({
        enableWelcomeMessage: false,
        locale: "<%=I18n.locale%>"
      });

      $(document).on("turbolinks:load", function(event) {
        drift.on('ready',function(api){
           drift.api.widget.show() <------- problem is here (?)
        })
      })

      drift.on('ready',function(api){

        console.log("Drift is ready")

        $('.drift-open-chat').on('click', function(e){
          api.widget.show()
          api.sidebar.open()
          e.preventDefault();
        })


        <% if current_user %>
          drift.api.setUserAttributes({
            user_id: <%=current_user.id%>,
            email: "<%=current_user.email%>"          
          })
        <% end %>

      })




    </script>

EN

回答 1

Stack Overflow用户

发布于 2021-01-22 06:32:01

Drift希望每次导航都是重新加载整个页面,这是Turbolinks所打破的。要解决此问题,必须将两个永久元素添加到布局文件中。这将导致tubolinks将聊天小部件从一个主体交换到另一个主体交换。

代码语言:javascript
复制
<div id="drift-frame-chat" class="drift-conductor-item drift-frame-chat" data-turbolinks-permanent></div>
<div id="drift-frame-controller" class="drift-conductor-item drift-frame-controller" data-turbolinks-permanent></div>

编辑:已再次更改。在更改页面时使用以下代码以使其正常工作:

代码语言:javascript
复制
document.addEventListener('turbolinks:load',
  () => {
    if (window.drift.ready) {
      window.drift.unload();
      window.drift.load('{YOUR_EMBED_ID}');
    }
  })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61306618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档