嗨,我想将聊天插件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/