Turbolink导致在下一页加载第三方javascript(zendesk)的问题

时间:2016-09-18 08:19:00

标签: jquery ruby-on-rails turbolinks zendesk

我在rails3上,Turbo-links导致zendesk的链接不起作用。

我使用的是zendesk脚本,并且未在下一页上加载,然后我使用了提到here的脚本。它似乎在chrome上运行良好,但在Firefox和Safari上,它仍然会导致问题。

我已将以下行添加到我的布局中:

= javascript_include_tag 'zendesk', 'data-turbolinks-track' => true

:javascript
  document.addEventListener('page:change', zendesk_web_widget());

and zendesk_web_widget() is function that loading widget.

我在网上搜索并找到了一些解决方案,但根本没有工作:

  

Rails 4 turbo-link prevents jQuery scripts from working

     

https://github.com/turbolinks/turbolinks-classic/issues/166

任何人都有任何想法,请告诉我。

1 个答案:

答案 0 :(得分:1)

您正在将函数zendesk_web_widget的返回值传递给侦听器,而不是函数本身。因此,不要调用函数(使用()),而是尝试传递函数:

document.addEventListener('page:change', zendesk_web_widget);

或者,为它创建一个包装函数:

document.addEventListener('page:change', function () { zendesk_web_widget(); });

既然你正在使用jQuery,为什么不让代码使用jQuery。

$(document).on('page:change', zendesk_web_widget);