2

嗨,我想将聊天插件 Tawk.to 集成到我的 rails 应用程序中,但是添加脚本,因为他们给它不会与 Turbolinks 一起使用,我还尝试将脚本添加到函数中并在 .ready 和页面上调用它:load 但是它不起作用,这是原始脚本:

var Tawk_API=Tawk_API||{}, Tawk_LoadStart=new Date();
  (function(){
  var s1=document.createElement("script"),s0=document.getElementsByTagName("script")[0];
  s1.async=true;
  s1.src='https://embed.tawk.to/API_KEY/default';
  s1.charset='UTF-8';
  s1.setAttribute('crossorigin','*');
  s0.parentNode.insertBefore(s1,s0);
  })();

我在 application.js 文件中尝试了以下内容:

function tawk_chat(){
    var Tawk_API=Tawk_API||{}, Tawk_LoadStart=new Date();
    (function(){
    var s1=document.createElement("script"),s0=document.getElementsByTagName("script")[0];
    s1.async=true;
    s1.src='https://embed.tawk.to/API_KEY/default';
    s1.charset='UTF-8';
    s1.setAttribute('crossorigin','*');
    s0.parentNode.insertBefore(s1,s0);
    })();
}

$(document).on("ready page:load", function() {
  tawk_chat();
});

以上没有奏效。如何在启用 Turbolinks 的情况下使上述脚本工作?

4

1 回答 1

8

有一个名为Tawk-rails的 Ruby gem ,但是我安装并测试了它,它有同样的 Turbolinks 问题,所以我开始尝试解决这个问题。

实际上修复 Tawk 脚本以使其与 Turbolinks 一起工作非常容易,您只需将$_Tawk变量设置为未定义,因此生成的脚本将是:

<script type="text/javascript”&gt;
window.$_Tawk = undefined; 
var Tawk_API=Tawk_API||{}, Tawk_LoadStart=new Date();
(function(){
var s1=document.createElement("script"),s0=document.getElementsByTagName("script")[0];
s1.async=true;
s1.src='https://embed.tawk.to/#{Tawk_account_id}/default';
s1.charset='UTF-8’;
s1.setAttribute('crossorigin','*’);
s0.parentNode.insertBefore(s1,s0);
})();
</script>

您可以直接在 application.js 中将上述脚本添加到一个函数中,然后在 .ready 上调用它,或者您可以安装这个Tawk-rails gem 的分叉版本,我在其中解决了这个问题

我已经对原始 gem 做了一个拉取请求,所以一旦他们合并它,我会更新答案。

更新

现在拉取请求已合并到原始 gem,现在您可以安装 tawk-rails gem,即使启用了 Turbolinks,Tawk.to 也将按预期工作

于 2016-01-28T19:56:30.200 回答