Rails:Tawk.to聊天插件和Turbolinks问题

时间:2016-01-28 19:56:30

标签: javascript ruby-on-rails chat turbolinks

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

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启用上述脚本?

1 个答案:

答案 0 :(得分:7)

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

实际修复Tawk脚本以使其与Turbolinks一起使用非常简单,您只需要将$_Tawk变量设置为undefined,因此生成的脚本将是:

<script type="text/javascript”>
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上调用它,或者你可以在我修复这个问题的地方安装this分叉版本的Tawk-rails gem

我已经对原始gem进行了拉取请求,因此一旦合并它,我将更新答案。

更新

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