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

请您参考如下方法:

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

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

<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 的 fork 版本

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

更新

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


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!