嗨,我想将聊天插件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的情况下使上述脚本起作用?

最佳答案

有一个名为Tawk-rails的Ruby gem ,但是我安装并测试了它,并且它具有相同的Turbolink问题,因此我开始尝试解决此问题。
实际上,修复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上调用它,也可以安装Tawk-rails gem的this fork 版本,以解决此问题
我已经对原始gem发出了请求,因此一旦它们合并,我将更新答案。
更新资料
现在,拉取请求已合并到原始gem中,现在您可以安装tawk-rails gem,并且即使启用了Turbolinks,Tawk.to也将按预期工作

关于javascript - Rails:Tawk.to聊天插件和Turbolinks问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35070821/

10-09 01:00