Turbolink 导致在下一页加载第 3 方 javascript(zendesk) 时出现问题

Turbolink causing issue to load the 3rd party javascript(zendesk) on next page

我在 rails3 上,Turbo-links 导致 link for 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

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

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

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

或者,为它制作一个包装函数:

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

既然您使用的是 jQuery,为什么不让代码使用 jQuery。

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